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

相同子列表的Python列表

发布时间:2020-12-20 12:30:25 所属栏目:Python 来源:网络整理
导读:我试图以编程方式创建一个包含n个相同子列表的列表: pos = [10,20] 3 * pos[10,20,10,20] 但我想要的是[[10,20],[10,20]] 有线索吗? 解决方法 使用列表理解: [[10,20] for _ in range(3)] 还可以选择使用乘法: [[10,20]] * 3 # or [pos] * 3 但是这会创
我试图以编程方式创建一个包含n个相同子列表的列表:

>>> pos = [10,20]
>>> 3 * pos
[10,20,10,20]

但我想要的是[[10,20],[10,20]]

有线索吗?

解决方法

使用列表理解:

[[10,20] for _ in range(3)]

还可以选择使用乘法:

[[10,20]] * 3   # or [pos] * 3

但是这会创建一个包含3个对同一嵌套列表的引用的列表:

>>> lis = [[10,20]] * 3
>>> lis[0][0] = 'foo'
>>> lis
[['foo',['foo',20]]

这通常不是你想要的.列表推导重新评估每个循环迭代的左侧表达式(for表达式之前的部分),并为外部列表中的每个索引创建一个新列表:

>>> lis = [[10,20] for _ in range(3)]
>>> lis[0][0] = 'foo'
>>> lis
[['foo',20]]

如果要使用存储在变量中的列表重复,请确保在每次迭代时创建一个副本:

[pos[:] for _ in range(3)]

(编辑:李大同)

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

    推荐文章
      热点阅读