Тому мені було цікаво, як найкраще створити список порожніх списків:
[[],[],[]...]
Через те, як Python працює зі списками в пам'яті, це не працює:
[[]]*n
Це створюється, [[],[],...]але кожен елемент - це той самий список:
d = [[]]*n
d[0].append(1)
#[[1],[1],...]
Щось на зразок розуміння списку працює:
d = [[] for x in xrange(0,n)]
Але для цього використовується віртуальна машина Python для циклу. Чи є спосіб використовувати мається на увазі цикл (скориставшись тим, що він написаний на C)?
d = []
map(lambda n: d.append([]),xrange(0,10))
Це насправді повільніше. :(
timeitчим ви дізналися?
map(lambda x: [], xrange(n))це повільніше, ніж розуміння списку.
d = [[] for x in xrange(0,n)]. Вам або доведеться чітко циклічити в Python або викликати функцію / лямбда Python кілька разів (що має бути повільніше). Але все одно сподіваюся, що хтось опублікує щось, що свідчить про те, що я помиляюся :).