我想创建一个长度可变的列表,其中包含空目录。
n = 10 # size of list
foo = []
for _ in range(n)
foo.append({})
你会以同样的方式去做吗,或者有其他不同的方法吗?
a = [{}*n]
我想创建一个长度可变的列表,其中包含空目录。
n = 10 # size of list
foo = []
for _ in range(n)
foo.append({})
你会以同样的方式去做吗,或者有其他不同的方法吗?
a = [{}*n]
列表理解来拯救!
foo = [{} for _ in range(n)]
恐怕没有更短的表示法。在Python 2中,你要使用xrange(n)
代替range(n)
,以避免创建一个无用的列表。
另一种方法,[{}] * n
将创建一个长度为n
的列表,其中只有一个字典,被引用了n
次。这会导致添加字典键时出现问题。
[{}] * 3
不是一个好的做法;你会发现自己忘记了这个小细节,当你后来添加键和值时,你会遇到一个令人不愉快的惊喜。 - Martijn Pietersxrange()
被重命名为range()
并进行了改进,我的初始示例假定使用Python 3。 - Martijn Pieters[{}] * n
给搞崩了。这是否意味着在 Python 中预分配列表不是“Pythonic”的?总的来说,在 Python 中,列表一直是一个大问题,但我有一种感觉,我只是没有按照预期使用它们... - JustinBlaber