Python嵌套列表按索引提取元素到多个列表结果不符求助
问题原因
你的代码存在两层多余的嵌套循环,导致重复执行append操作:
- 第一层循环遍历
inputs的每个子列表,示例中会循环2次 - 第二层循环额外遍历了每个子列表的所有元素,示例中每个子列表有3个元素,因此总共会执行
2*3=6次append操作,最终每个row列表的长度为6,和你得到的错误输出一致 - 同时你直接把子列表的元素值当作索引使用,还会出现下标为负、索引越界等潜在逻辑错误
修正方案
方法1:修改循环逻辑(最易理解)
直接遍历每个子列表,按需提取对应位置的元素即可:
row_1 = [] row_2 = [] row_3 = [] for sub_list in inputs: row_1.append(sub_list[0]) row_2.append(sub_list[1]) row_3.append(sub_list[2]) print(row_1, row_2, row_3)
方法2:用zip函数更简洁实现
Python内置的zip函数可以直接对嵌套列表按列解包,一行就能完成需求:
row_1, row_2, row_3 = map(list, zip(*inputs)) print(row_1, row_2, row_3)
内容的提问来源于stack exchange,提问作者eyadali05
相关产品推荐
相关产品推荐

