我需要逐步填充一个列表或元组的列表。类似于这样的东西:
result = []
firstTime = True
for i in range(x):
for j in someListOfElements:
if firstTime:
result.append([f(j)])
else:
result[i].append(j)
为了使其更简洁优雅,我打算预分配一个空列表的列表。result = createListOfEmptyLists(x)
for i in range(x):
for j in someListOfElements:
result[i].append(j)
对我来说,预分配的部分不是很清楚。当我执行result = [[]] * x
时,我得到了一个包含x
个指向同一列表的引用的列表,因此以下操作的输出结果为:
result[0].append(10)
print result
是:
[[10], [10], [10], [10], [10], [10], [10], [10], [10], [10]]
我可以使用循环(result = [[] for i in range(x)]
),但我想知道是否存在“无循环”的解决方案。
是不是只有通过循环才能得到我想要的结果?
[ [ [] for c in range(cols) ] for r in range(rows) ]
。 - Tony