2016-04-14 14 views

Odpowiedz

10

użytkowania operator zip i rozpakowywania.

>>> l = [['x1','y1'], ['x2','y2']] 
>>> zip(*l) 
[('x1', 'x2'), ('y1', 'y2')] 
+0

@Bhargav Rao: Czy możesz wyjaśnić jak działa '*' lub podać kilka linków wyjaśniających '*'? –

+0

@Vivek Możesz dowiedzieć się więcej o operatorze '*' tutaj https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists –

+2

Pomijając fakt, że to pytanie korzysta w szczególności z 'zip' zwracając listę krotek, bardziej ogólnie "zip (* X)" może być uważana za transpozycję macierzy "X". Przydaje się to osobom, które zrobiły dużo algebry liniowej i dlatego naturalnie sądzą, że wymagana kolejność pytań wymaga transpozycji. –

2

Obchodzono więcej walizek w teście.

Jeśli na liście znajdują się pozycje o różnej długości.

In [19]: a 
Out[19]: [[1, 2], [3, 4], [5, 6], [7, 8, 9]] 

In [20]: import itertools 

In [21]: b = itertools.izip_longest(*a) 

In [22]: list(b) 
Out[22]: [(1, 3, 5, 7), (2, 4, 6, 8), (None, None, None, 9)] 
+0

@BhargavRao: Zaktualizowana odpowiedź i kto może głosować na odpowiedź może również sprawdzić i dać mi znać, czy jest tam jakiś problem :) –