【问题标题】:Adding two list in a list in python在python的列表中添加两个列表
【发布时间】:2018-02-13 00:00:41
【问题描述】:

谁能帮帮我。这就是我想做的。

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]]

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

【问题讨论】:

  • 我现在解决了。我使用 w = [b + [[0,1]] 作为 b in x]

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


【解决方案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 将反映所有子列表的更改。你可以通过插入一个副本来防止这种情况发生,这就是我在顶部所做的。

【讨论】:

  • 这个答案真的帮助了我再次感谢
  • @Denlord 没问题。您可以将接受的答案标记为有帮助。单击答案旁边的灰色复选标记将其切换为绿色。谢谢。
【解决方案2】:

试试这个:

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

【讨论】:

  • 始终记得在您发布的答案中添加说明,以便用户了解它的用法。 @carexcer
猜你喜欢
  • 2011-12-18
  • 2022-07-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
相关资源
最近更新 更多