nos*_*nos 0 python tuples list
乡亲,
我想创建以下列表,但不是3次重复,我想要重复12次.有没有办法在没有明确键入12次的情况下执行此操作?非常感谢您的帮助.
[(0,pi), (0,pi), (0,pi)]
Run Code Online (Sandbox Code Playgroud)
您可以使用列表理解:
l = [(0, pi) for i in range(12)]
Run Code Online (Sandbox Code Playgroud)
替代方法(乘以列表)可能适用于tuple对象,因为它们是不可变的,但是当您在list对象上尝试时,您将撕掉头发:
>>> pi = 3
>>> l = [[0, pi]] * 4
>>> l
[[0, 3], [0, 3], [0, 3], [0, 3]]
>>> l[0][1] = 4
>>> l
[[0, 4], [0, 4], [0, 4], [0, 4]] # Wat
Run Code Online (Sandbox Code Playgroud)
除了字符串之外,我个人远离那种方法.
这将与元组一起使用(但不建议用于列表):
myl=[(0,pi)] * 12
Run Code Online (Sandbox Code Playgroud)
给 myl
[(0, 3.14), (0, 3.14), (0, 3.14), (0, 3.14), (0, 3.14), (0, 3.14),
(0, 3.14), (0, 3.14), (0, 3.14), (0, 3.14), (0, 3.14), (0, 3.14)]
Run Code Online (Sandbox Code Playgroud)
正如@senderle在下面的一个有用的评论中提到的,这是一个很好的方法,因为元组是不可变的.这对于列表来说不是一种安全的方法,因为它可能会产生意想不到的结果,如下例所示.
元组与列表:
有元组:
In [69]: myl=[(0,pi)] * 3
In [70]: myl
Out[70]: [(0, 3.14), (0, 3.14), (0, 3.14)]
In [71]: myl[0][0] = 55
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
----> 1 myl[0][0] = 55
TypeError: 'tuple' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
有了列表:
In [72]: myl=[[0,pi]] * 3
In [73]: myl
Out[73]: [[0, 3.14], [0, 3.14], [0, 3.14]]
In [74]: myl[0][0] = 55
In [75]: myl
Out[75]: [[55, 3.14], [55, 3.14], [55, 3.14]] # every list element changes!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |