понимание списков для объединения различных списков в python - PullRequest
3 голосов
/ 25 февраля 2011

Мне нужно построить много образцов данных, каждый из которых хранится в списке целых чисел. Я хочу создать список из множества составных списков, чтобы построить его с помощью enumerate (big_list), чтобы получить координату x с фиксированным смещением. Мой текущий код:

biglist = []
for n in xrange(number_of_lists):
    biglist.extend(recordings[n][chosen_channel])
for x,y in enumerate(biglist):
    print x,y

Примечания: number_of_lists и selected_channel являются целочисленными параметрами, определенными в другом месте, и, например, выведите x, y (на самом деле существуют другие операторы для построения точек.

Мой вопрос: Есть ли лучший способ, например, списки или другие операции, для достижения того же результата (объединенный список) без цикла и предварительно объявленного пустого списка?

Спасибо

Ответы [ 2 ]

4 голосов
/ 25 февраля 2011
import itertools
for x,y in enumerate(itertools.chain(*(recordings[n][chosen_channel] for n in xrange(number_of_lists))):
    print x,y

Вы можете думать о itertools.chain() как об управлении итератором по отдельным спискам.Он запоминает, какой список и где в списке вы находитесь.Это сэкономит вам всю память, необходимую для создания большого списка.

3 голосов
/ 25 февраля 2011
>>> import itertools
>>> l1 = [2,3,4,5]
>>> l2=[9,8,7]
>>> itertools.chain(l1,l2)
<itertools.chain object at 0x100429f90>
>>> list(itertools.chain(l1,l2))
[2, 3, 4, 5, 9, 8, 7]
...