2016-04-14 3 views

Antwort

10

Verwenden Sie ein zip und Auspacken Betreiber.

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

@Bhargav Rao: Kannst du erklären, wie '*' funktioniert oder einige Links geben, die '*' erklären? –

+0

@Vivek Sie können hier mehr über den '*' Operator erfahren https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists –

+2

Abgesehen davon, dass diese Frage speziell von 'zip' profitiert Zurückgeben einer Liste von Tupel, allgemeiner 'zip (* X)' kann als die Matrix-Transponierte von "X" gedacht werden. Das ist nützlich für Leute, die viel Lineare Algebra gemacht haben und daher natürlich an die erforderliche Umordnung des Fragestellers als Transposition denken. –

2

Behandelt mehr Fall in Testfall geben.

Wenn es Einträge in der Liste gibt, die unterschiedliche Länge haben.

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: Aktualisierte Antwort, und wer abwählte, kann auch überprüfen und lassen Sie mich wissen, wenn es ein Problem gibt :) –