2013-12-03 2 views

ответ

1

Использование zip с map или список понимания:

>>> map(list, zip(A, B)) 
[['5', '1'], ['6', '2'], ['7', '3'], ['8', '4']] 
>>> [list(x) for x in zip(A, B)] 
[['5', '1'], ['6', '2'], ['7', '3'], ['8', '4']] 
+0

Будет ли один из этих двух вариантов рассматриваться более питоническим? – Alec

+0

@alecbenzer Преимущество LC заключается в том, что его можно использовать как в Python2, так и в Python3, но для 'map' вам понадобится дополнительный вызов' list() 'в Python3. –

2

использование почтового индекса: http://docs.python.org/2/library/functions.html#zip

In [1]: A = [5,6,7,8] 

In [2]: B = [1,2,3,4] 

In [3]: zip(A,B) 
Out[3]: [(5, 1), (6, 2), (7, 3), (8, 4)] 

In [4]: map(list, zip(A, B)) 
Out[4]: [[5, 1], [6, 2], [7, 3], [8, 4]] 

In [5]: [list(x) for x in zip(A, B)] 
Out[5]: [[5, 1], [6, 2], [7, 3], [8, 4]] 

EDIT: добавлен в [4] через Out [5]

+1

Вот список кортежей, а не список списков –

+1

Sure, но он может применить список понимание или 'map' как другие предложили – jpwagner

+0

ОК , отлично, я добавлю его, мне не нравится наступать на ответы других, но это кажется нормой здесь – jpwagner

1

Как это:

>>> [list(t) for t in zip(A, B)] 
[['5', '1'], ['6', '2'], ['7', '3'], ['8', '4']] 

Если вы равнину: zip(A, B) то вы получите список кортежей, который строго не соответствует тому, что вы просили:

>>> zip(A, B) 
[('5', '1'), ('6', '2'), ('7', '3'), ('8', '4')] 

Так применить list() для каждого кортежа, который выходит из zip, чтобы получить то, что вы просили.

Смежные вопросы