在python中的列表中添加两个列表

时间:2018-02-13 00:00:41

标签: python-3.x list for-loop

任何人都可以帮助我。这就是我想要做的。

x = [[1,2,3,4,5],[6,7,8,9,10]] y= [0,1]

desired output = [
                 [[1,2,3,4,5],[0,1]],
                 [[6,7,8,9,10],[0,1]]
                                    ]

我尝试将其放入for循环

>>> x = [[1,2,3,4,5],[6,7,8,9,10]]
>>> for value in x:
...     a = []
...     a += ([x,y])
...     print(a)
...
[[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], [0, 1]]
[[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], [0, 1]]

我也试过这个

>>> for value in x:
...     a = []
...     a += ([x,y])
...     print(a)
...
[[1, 2, 3, 4, 5], [0, 1]]
[[1, 2, 3, 4, 5], [0, 1]]
[[1, 2, 3, 4, 5], [0, 1]]
[[1, 2, 3, 4, 5], [0, 1]]
[[1, 2, 3, 4, 5], [0, 1]]

感谢您的帮助。我需要它来为我的神经网络数据添加标签。

2 个答案:

答案 0 :(得分:1)

您可以使用列表推导,并遍历x中的每个子列表。由于您将y插入到不同的子列表中,因此您可能希望插入列表的副本,而不是原始列表。

[[i, y[:]] for i in x] 

或者,

[[i, y.copy()] for i in x] 

[[[1, 2, 3, 4, 5], [0, 1]], [[6, 7, 8, 9, 10], [0, 1]]]

副本是作为安全预防措施完成的。要了解原因,请考虑一个例子,

z = [[i, y] for i in x]  # inserting y (reference copy)
y[0] = 12345

print(z)
[[[1, 2, 3, 4, 5], [12345, 1]], [[6, 7, 8, 9, 10], [12345, 1]]] # oops

修改任何其他子列表中的原始yy将反映所有子列表中的更改。您可以通过插入副本来防止这种情况,这就是我在顶部所做的。

答案 1 :(得分:-1)

试试这个:

for i in range(len(x)):
   z[i] = [x[i],y];