python – 为列表保留空间
发布时间:2020-12-20 11:49:21 所属栏目:Python 来源:网络整理
导读:我必须使list2使用list1中的名称,但list1中的名称数量可以变化. foo = ['spam','eggs']bar = [['spam',['a','b']],['eggs',['c','d']]] 所以,我保留吧 bar = [[None] * 2] * len(foo) 并通过循环从list1复制名称 bar[i][0] = foo[i] 但结果是每个子列表中的
我必须使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','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副本的列表,所以你的子列表都是相同的 – 当你更改一个时,你可以更改它们. 我建议的方式将创建包含相同内容的唯一列表(两个无副本).因此,更改其中一个子列表不会改变任何其他子列表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |