Jak 'pythonic-ly', mogę włączyć to:Lista listach do listy krotek, kolejność
[[x1,y1], [x2,y2]]
Into:
[(x1,x2),(y1,y2)]
Jak 'pythonic-ly', mogę włączyć to:Lista listach do listy krotek, kolejność
[[x1,y1], [x2,y2]]
Into:
[(x1,x2),(y1,y2)]
użytkowania operator zip
i rozpakowywania.
>>> l = [['x1','y1'], ['x2','y2']]
>>> zip(*l)
[('x1', 'x2'), ('y1', 'y2')]
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)]
@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 :) –
@Bhargav Rao: Czy możesz wyjaśnić jak działa '*' lub podać kilka linków wyjaśniających '*'? –
@Vivek Możesz dowiedzieć się więcej o operatorze '*' tutaj https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists –
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. –