Python中如何通过表达式而非常量查找列表符合条件的首个元素索引
Python列表自定义条件查找首个匹配索引方案
针对你需要通过自定义表达式查找首个符合条件的元素索引的需求,这里给出两种可直接运行的实现,均可以匹配你示例中「首次出现0变1的位置」的需求:
方法1:基础for循环实现(易扩展自定义条件)
核心逻辑是从第二个元素开始遍历,逐个比对相邻元素的取值是否符合变化规则,匹配到第一个结果就直接返回:
list_A = [None, None, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0] target_index = -1 # 从索引1开始遍历,避免i-1越界 for i in range(1, len(list_A)): # 可任意自定义此处的判断表达式,满足你的不同查找需求 if list_A[i-1] == 0 and list_A[i] == 1: target_index = i break print(target_index) # 运行输出结果为8
该方案的优势是逻辑清晰,判断条件可以任意修改扩展,不需要额外依赖。
方法2:生成器简洁实现
如果需要更短的代码实现,可以用next()配合生成器表达式完成:
list_A = [None, None, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0] # next第二个参数为无匹配项时的默认返回值 target_index = next((i for i in range(1, len(list_A)) if list_A[i-1] == 0 and list_A[i] == 1), -1) print(target_index) # 运行输出结果为8
如果没有符合条件的元素,两种方法都会返回-1作为标识,不会抛出异常。
内容的提问来源于stack exchange,提问作者Benny Chen
相关产品推荐
相关产品推荐

