展开列表将在Python中返回意外错误

时间:2019-05-19 00:09:39

标签: python-3.x list

我已经阅读了关于Stackoverflow上的非展平列表的所有文章,但是找不到解决我问题的方法。

我有两个列表,我想将list2中的一个元素添加到list1中的每个元素。

l1 = [[1,2],[3,4]]
l2 = [5, 7]

我追求的结果是

[[1, 2, 5], [3, 4, 6]]

我已经尝试过此代码

for i in range(len(l2)):
    l1[i].extend(l2[i])

print(l1)

但返回错误“ TypeError:'int'对象不可迭代”

当l2的每个元素本身都是列表时,例如l2 = [[5],[7]] 我的代码工作正常。这是为什么?以及当l2的格式为l2 = [5, 7]

时,如何调整代码使其正常工作

3 个答案:

答案 0 :(得分:1)

list1.extend(list2)用于创建list1+list2。但是您没有提供list2,它只是一个元素。正确的功能是list1.append(element2),它与list1+[element2]

答案 1 :(得分:1)

使用zip()并行遍历两个或多个对象。在不需要索引时使用range()进行索引是非Python的。

xss = [[1,2],[3,4]]
ys = [5,7]

for xs, y in zip(xss, ys):
    xs.append(y)

print(xss)

[[1, 2, 5], [3, 4, 7]]

答案 2 :(得分:-1)

l1 = [[1,2],[3,4]]
l2 = [5, 7]
for i in range(len(l2)):
l1[i].append(l2[i]);

print(l1)

[[1、2、5],[3、4、7]]

Extend is for objects.
Append is what you need here.