如何获取两个列表相同位置元素均为1的对应索引?
问题分析
原有代码的错误点如下:
- 不需要双层循环:我们需要对比两个列表相同索引位置的元素,仅用一层循环遍历公共索引即可,双层循环且内外层都用变量
i会导致索引逻辑完全混乱 - 追加值错误:原代码满足条件时追加的是
lst1[i]也就是元素值1,需求要的是对应索引i
正确实现代码
基础写法(易理解)
lst1 = [1,0,0,1,1] lst2 = [0,0,1,1,0] my_list = [] # 遍历两个列表的公共索引,如果长度不一致可改为range(min(len(lst1), len(lst2)))避免越界 for idx in range(len(lst1)): if lst1[idx] == 1 and lst2[idx] == 1: my_list.append(idx) print(my_list) # 输出 [3]
简洁写法(列表推导式)
lst1 = [1,0,0,1,1] lst2 = [0,0,1,1,0] my_list = [idx for idx, (val1, val2) in enumerate(zip(lst1, lst2)) if val1 == val2 == 1] print(my_list) # 输出 [3]
内容的提问来源于stack exchange,提问作者Bryan Hii
相关产品推荐
相关产品推荐

