Python 3中如何将列表元素对应添加至嵌套列表?
解决Python嵌套列表元素添加的问题
我来帮你看看问题出在哪,以及怎么修改代码得到你想要的结果~
首先,你原来的代码用了双层循环,这会让list_1里的每个子列表都去遍历list_2的所有元素,所以每个子列表会被连续append三次100;而且因为列表是可变对象,你每次添加到store_1的都是同一个子列表的引用,最后就出现了重复的长列表。
要实现每个子列表对应添加list_2里的一个元素(刚好两个列表长度一致),可以用下面几种方法:
方法一:用zip配对元素 + 创建新列表
list_1 = [[0, 1], [1, 4], [2, 3]] list_2 = [100, 100, 100] store_1 = [] # 用zip把两个列表的对应元素配对 for sublist, num in zip(list_1, list_2): # 复制原列表,避免修改原list_1的内容 new_sublist = sublist.copy() new_sublist.append(num) store_1.append(new_sublist) print(store_1)
方法二:更简洁的列表推导式
如果你喜欢简洁的写法,用列表推导式一步到位:
list_1 = [[0, 1], [1, 4], [2, 3]] list_2 = [100, 100, 100] # 直接生成新列表,不修改原数据 store_1 = [sublist + [num] for sublist, num in zip(list_1, list_2)] print(store_1)
这两种方法都会输出你期望的结果:
[[0,1,100],[1,4,100], [2,3,100]]
核心思路就是:
- 用
zip让两个列表的元素一一对应,避免双层循环的冗余遍历 - 创建新的子列表(不管是用
copy()还是+拼接),避免修改原列表的同时,也不会因为引用同一个对象导致重复内容
内容的提问来源于stack exchange,提问作者Mahir Islam
相关产品推荐
相关产品推荐

