Мне нужно поэтапно заполнить список или кортеж списков. Что-то похожее на это:
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)
Часть preallocation для меня не очевидна. Когда я делаю 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)]
), но мне интересно, существует ли "петлевое" решение.
Это единственный способ получить то, что я ищу.