Python:如何遍历子列表并使用zip函数选取指定索引元素?
问题解决:用zip选取两个列表子列表相同索引的元素
原代码存在的问题:
- 条件判断错误:用了赋值符号
=,应该用相等判断== - 元素索引方式错误:应该是
子列表[索引](比如i[c]),而非索引[子列表](c[i]) - 结果列表初始化位置错误:
out1和out2放在外层循环内,每次循环都会被重置为空,无法保留之前的结果 - 遍历方式冗余:没必要通过
range(len(i))生成索引再zip,直接操作子列表更高效
修正后的代码实现
如果你只需要从每个子列表的索引1位置(对应元素7、10)提取元素到out1,out2保持为空,最简单的写法如下:
List1 = [[6, 7, 8], [9, 10, 11]] # 此处假设A/B/C/D/E/F是已定义的变量,示例中用字符串占位 List2 = [["A", "B", "C"], ["D", "E", "F"]] out1 = [] out2 = [] # 配对两个列表的子列表 for sub_list1, sub_list2 in zip(List1, List2): # 提取子列表索引1的元素加入out1 out1.append(sub_list1[1]) # 不需要List2的元素,所以不对out2做操作 print(out1) # 输出: [7, 10] print(out2) # 输出: []
如果需要通过遍历索引的方式实现(比如后续要灵活调整索引条件),可以用enumerate结合zip:
List1 = [[6, 7, 8], [9, 10, 11]] List2 = [["A", "B", "C"], ["D", "E", "F"]] out1 = [] out2 = [] for sub1, sub2 in zip(List1, List2): # 遍历子列表的索引与对应元素对 for idx, (elem1, elem2) in enumerate(zip(sub1, sub2)): if idx == 1: out1.append(elem1) # 若后续需要List2对应元素,取消下面注释即可 # out2.append(elem2) print(out1) # 输出: [7, 10] print(out2) # 输出: []
内容的提问来源于stack exchange,提问作者Redouane TEBBOUNE
相关产品推荐
相关产品推荐

