【发布时间】:2013-04-05 13:30:19
【问题描述】:
我想创建一个包含空目录的可变长度列表。
n = 10 # size of list
foo = []
for _ in range(n)
foo.append({})
你会用同样的方法吗,还是有类似的方法?
a = [{}*n]
【问题讨论】:
标签: python list dictionary
我想创建一个包含空目录的可变长度列表。
n = 10 # size of list
foo = []
for _ in range(n)
foo.append({})
你会用同样的方法吗,还是有类似的方法?
a = [{}*n]
【问题讨论】:
标签: python list dictionary
列出解析来拯救!
foo = [{} for _ in range(n)]
恐怕没有更短的符号。在 Python 2 中,您使用 xrange(n) 而不是 range(n) 以避免实现无用的列表。
另一种选择,[{}] * n 创建一个长度为 n 的列表,其中只有 一个 字典,引用 n 次。在向字典添加键时,这会导致令人讨厌的意外。
【讨论】:
[{}] * 3 不是一个好习惯,即使这只是用于JSON;你会发现自己忘记了那个小细节,当你稍后添加键和值时,你会遇到一个令人讨厌的惊喜。
xrange() 已重命名为 range() 并进行了改进,我最初的示例假设 Python 3。
[{}] * n 的rekt。这是否基本上意味着python中的预分配列表不是“pythonic”?在 python 中,列表通常是一个很大的痛苦,但我有一种感觉,我只是没有按预期使用它们......