Skip to main content
 首页 » 编程设计

python之如何按顺序将值附加到列表中的每个元组

2025年05月04日12jackei

我正在尝试找到一种方法来按顺序将值附加到列表中的每个元组。假设我有以下两个列表:

List_1: 
[('xxx', 1), ('yyy', 2), ('zzz', 3), ('aaa', 1), ('fff', 4), ('bbb', 0)] 
 
List_2: 
['1', '3', '4', '20', '11', '15'] 
 
Desire outcome: 
[('xxx', 1, '1'), ('yyy', 2, '3'), ('zzz', 3, '4'), ('aaa', 1, '20'), ('fff', 4, '11'), ('bbb', 0, '15')] 

这是我的代码

for y in List_1: 
        for x in List_2: 
            desire_list = [list(y) + [x] for y in List_1] 

输出会将 List_2 中的每个单独值添加到 List_1 中的每个元组

[[('xxx', 1, '1'), ('yyy', 2, '1'), ('zzz', 3, '1'), ('aaa', 1, '1'), ('fff', 4, '1'), ('bbb', 0, '1')]] 
[[('xxx', 1, '3'), ('yyy', 2, '3'), ('zzz', 3, '3'), ('aaa', 1, '3'), ('fff', 4, '3'), ('bbb', 0, '3')]] 

很明显我没有做对......我想知道正确的方法是什么,如果我有多个列表我想将值附加到 List_1 就像我尝试的那样从 List_2 做?例如:

List_2:['1', '3', '4', '20', '11', '15'] 
List_3 ['10', '20', '10', '210', '50', '150'] 
 
List_1 [('xxx', 1, '1', '10'), ('yyy', 2, '3', '20'), ('zzz', 3, '4', '10'), ('aaa', 1, '20', '210'), ('fff', 4, '11', '50'), ('bbb', 0, '15', '150')] 

请您参考如下方法:

这很简单,使用 zip 和元组解包:

>>> [ (x, y, z) for ((x, y), z) in zip(List_1, List_2) ] 
[('xxx', 1, '1'), ('yyy', 2, '3'), ('zzz', 3, '4'), ('aaa', 1, '20'), 
 ('fff', 4, '11'), ('bbb', 0, '15')] 

您尝试的解决方案的问题是您使用了嵌套循环,它遍历 List_1 中的一个元素和 List_2 中的一个元素的所有组合。你不需要所有的对;您只需要“平行”对,其中一个列表中的每个元素都与另一个列表中同一索引处的元素配对。在这种情况下,请使用 zip。