加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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副本的列表,所以你的子列表都是相同的 – 当你更改一个时,你可以更改它们.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读