Come 'divinatorio-ly', posso trasformare questo:Lista di liste a lista di tuple, riordinati
[[x1,y1], [x2,y2]]
Into:
[(x1,x2),(y1,y2)]
Come 'divinatorio-ly', posso trasformare questo:Lista di liste a lista di tuple, riordinati
[[x1,y1], [x2,y2]]
Into:
[(x1,x2),(y1,y2)]
Utilizzare un zip
e disimballaggio operatore.
>>> l = [['x1','y1'], ['x2','y2']]
>>> zip(*l)
[('x1', 'x2'), ('y1', 'y2')]
Gestito più caso in dare test case.
Se ci sono articoli in lista che hanno lunghezza diversa.
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)]
@BhargavRao: risposta aggiornata, e chi ha votato la risposta può anche controllare e farmi sapere se c'è qualche problema :) –
@Bhargav Rao: Puoi spiegare come '*' funziona o fornisci alcuni collegamenti che spiegano '*'? –
@Vivek Puoi trovare ulteriori informazioni sull'operatore '*' qui https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists –
A parte il fatto che questa domanda trae vantaggio da 'zip' restituendo una lista di tuple, più in generale 'zip (* X)' può essere considerata come la trasposizione matrice di 'X'. Il che è utile alle persone che hanno fatto un sacco di algebra lineare e quindi penserebbero naturalmente al riordinamento richiesto dall'interrogante come trasposizione. –