我必须使list2使用list1中的名称,但list1中的名称数量可以变化.
foo = ['spam', 'eggs']
bar = [['spam', ['a', 'b']], ['eggs', ['c', 'd']]]
所以,我保留吧
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
你得到一个包含相同listItem的numCopies副本的列表,所以你的子列表都是相同的 – 当你更改一个时,你可以更改它们.
我建议的方式将创建包含相同内容的唯一列表(两个无副本).因此,更改其中一个子列表不会改变任何其他子列表.