gpt4 book ai didi

python - 为列表预留空间

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:04 26 4
gpt4 key购买 nike

我必须制作 list2,它使用 list1 中的名称,但 list1 中的名称数量可能会有所不同。

foo = ['spam', 'eggs']
bar = [['spam', ['a', 'b']], ['eggs', ['c', 'd']]]

所以,我保留 bar

bar = [[None] * 2] * len(foo)

并通过循环从list1复制名字

 bar[i][0] = foo[i]

但结果是每个子列表中的名字都是一样的

bar = [['eggs', ['a', 'b']], ['eggs', ['c', 'd']]]

我尝试预订

bar = [[None, None], [None, None]]

完全没有问题。所以我认为问题出在我如何保留列表上。

我该如何解决这个问题。如果你不懂我的英语,请问。谢谢。

最佳答案

像这样创建你的第二个列表:

list2 = [[None]*2 for x in range(len(list1))]

或者,如果出于某种原因你不喜欢使用推导式,你可以这样做

list2 = []
for x in range(len(list1)):
list2.append([None,None])

问题是当你做类似的事情时

[listItem] * numCopies

您得到一个列表,其中包含 numCopies相同 listItem 的副本,因此您的子列表都是相同的 - 当您更改一个时,您全部改变。

我建议的方法将创建包含相同内容的唯一列表(None 的两个副本)。因此,更改其中一个子列表不会更改任何其他子列表。

关于python - 为列表预留空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35263267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com