[英]Python list of identical sublists
我試圖以編程方式創建一個包含n
相同子列表的列表:
>>> pos = [10,20]
>>> 3 * pos
[10, 20, 10, 20, 10, 20]
但我想要的是[[10,20], [10,20], [10,20]]
有線索嗎?
[[10, 20] for x in range(3)]
提防
[[10, 20]] * 3
因為它復制相同的列表3次
使用列表理解:
[[10, 20] for _ in range(3)]
還可以選擇使用乘法:
[[10, 20]] * 3 # or [pos] * 3
但是這會創建一個包含3個對同一嵌套列表的引用的列表 :
>>> lis = [[10, 20]] * 3
>>> lis[0][0] = 'foo'
>>> lis
[['foo', 20], ['foo', 20], ['foo', 20]]
這通常不是你想要的。 列表推導重新評估每個循環迭代的左側表達式( for
表達式之前的部分),並為外部列表中的每個索引創建一個新列表:
>>> lis = [[10, 20] for _ in range(3)]
>>> lis[0][0] = 'foo'
>>> lis
[['foo', 20], [10, 20], [10, 20]]
如果要使用存儲在變量中的列表重復,請確保在每次迭代時創建一個副本 :
[pos[:] for _ in range(3)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.