2014-11-16 11 views
0

Допустим, у меня есть три списка:Как создать список кортежей элементов

List1 = [1,2,3] 
List2 = [4,5,6] 
List3 = [7,8,9] 

А теперь я хочу, чтобы создать новый список с кортежей элементов, но и использовать данные из моих предыдущих списков:

NewList = [(1,4,7), (2,5,6), (3,6,9)] 

Как это можно сделать?

+1

возможно дубликат [Python - объединить элементы двух списков в список кортежей] (http://stackoverflow.com/questions/2407398/python-merge-items-of-two-lists-into- a-list-of-tuples) –

ответ

1

Все, что вам нужно, это zip:

>>> List1 = [1,2,3] 
>>> List2 = [4,5,6] 
>>> List3 = [7,8,9] 
>>> zip(*(List1, List2, List3)) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 
>>> 

Кроме того, вы заметите, что третий элемент второго набора отличается. Я думаю, у вас есть опечатка в вашем вопросе.

+0

+1 для 'zip' ..! также спасибо за внимание! – Kasramvd

+0

СПАСИБО iCodez. также, что я установил «zip (* (List1, List2, List3))», еще один список? потому что, если я это сделаю, и я его распечатаю, я получаю «<объект zip на 0x024789B8>» – rozzster

0

В качестве альтернативного ответа, если производительность важна для вас, я предлагаю использовать itertools.izip вместо встроенного zip():

>>> l=[List1,List2,List3] 
>>> from itertools import izip 
>>> list(izip(*l)) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 
+1

OP сказал, что ему нужен список кортежей. Функция 'zip' уже делает это. Зачем импортировать функцию только для получения того же результата? 'itertools.izip' является только более эффективным, если вы не преобразуете результат в список. – iCodez

+0

@ iCodez hmm, я думаю, что вы правы, так как я видел хорошую производительность 'izip' для себя, я просто хотел дать хорошее предложение, но для этого вопроса его более эффективно использовать' zip'! – Kasramvd

0

Это не самый лучший способ сделать это, так же, как альтернатива.

>>> NewList = [] 
>>> i = 0 
>>> while i <= len(List1)-1 : 
     NewList.append(tuple(j[i] for j in (List1, List2, List3))) 
     i+=1 
>>>NewList 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 
Смежные вопросы