LINUX.ORG.RU

[[] for _ in xrange(list_count)]
i-rinat ★★★★★
()

lists = []; for i in xrange(list_count): lists.append([])

MrClon ★★★★★
()
from itertools import repeat

list_of_lists = repeat([], list_count)
exception13 ★★★★★
()
Последнее исправление: exception13 (всего исправлений: 1)

Наверняка же можно как то в одну строчку, не?

С перла что ли пересаживаешься?

Siado ★★★★★
()
Ответ на: комментарий от true_admin

Это абсолютно не эквивалентно тому что в топике.

Почему?

list_count = 5

L1 = []
for i in xrange(list_count):
    L1.append([])

L2 = [[]] * list_count

print(L1)  # [[], [], [], [], []]
print(L2)  # [[], [], [], [], []]
metrokto ★★
()
Ответ на: комментарий от metrokto

Выполни map(id, L1) и map(id, L2), о храбрый воен Змеи в белом! И узришь свою ошибку!

Virtuos86 ★★★★★
()
Ответ на: комментарий от metrokto

list инстанцируется один раз. в итоге у тебя список из ссылок на один и тот же инстанс. в моем варианте кстати тоже.

exception13 ★★★★★
()
Ответ на: комментарий от true_admin

ага, и для строк это работает из-за их иммутабельности

anonymous
()
list(map(lambda i: list(), range(list_count)))

Но делать надо через list comprehension, конечно же.

risenshnobel ★★★
()

Ты там, случаем, не с матрицами собрался работать? Посмотри в сторону NumPy.

mix_mix ★★★★★
()

Это даже не программистская задачка, а просто хреновый синтаксис языка.

По сабжу:

>(loop repeat 5 collect '())
(NIL NIL NIL NIL NIL)

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.