我还是编程新手。 我有两个列表:
List1=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
List2=['a','b','c']
我想将一个列表的值放到另一个列表中,所以我的输出看起来像这样:
List1=[[1,2,3,4,'a'],[5,6,7,8,'b'],[9,10,11,12,'c']]
到目前为止,我设法写了这篇文章:
for i in range(0,len(List1)):
for row in List1:
row.insert(5, List2[i])
但是我明白了:
List1=[[1,2,3,4,'a','b','c'],[5,6,7,8,'a','b','c'],[9,10,11,12,'a','b','c']]
我敢肯定这可能是一个简单的错误,但是我找不到它是什么。
答案 0 :(得分:2)
您可以使用zip
:
List1=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
List2=['a','b','c']
List1 = [ a + list(b) for a, b in zip(List1, List2)]
print(List1)
出局:
[[1, 2, 3, 4, 'a'], [5, 6, 7, 8, 'b'], [9, 10, 11, 12, 'c']]
请注意,这将创建一个新列表,并且不会更改旧列表。如果使用列表可变性,则此代码将无效!
答案 1 :(得分:2)
您发布的代码非常明确地将每个字母添加到每个列表中。相反,您只想添加相应的字母。这两个列表都需要一个循环索引,而不是嵌套循环。
for i in range(len(List1)):
List1[i].append(List2[i])
答案 2 :(得分:1)
您可以使用append将第i个索引元素添加到List1的每个元素中
for i in range(len(List1)):
List1[i].append(List2[i])
答案 3 :(得分:0)
您要寻找的是zip
:
for row, char in zip(List1, List2):
row.append(char)
给出:
>>> List1
[[1, 2, 3, 4, 'a'], [5, 6, 7, 8, 'b'], [9, 10, 11, 12, 'c']]
答案 4 :(得分:0)
您可以使用迭代器:
it = iter(List2)
for lst in List1:
lst.append(next(it))