wie man Tupel von Listen mit list-comprehension in python
Ich habe zwei Listen und möchte verschmilzt Sie in einer Liste von tuples
. Ich möchte es mit list comprehension
ich es bekommen kann die Arbeit mit map
. aber wäre schön zu wissen, wie die list-comprehension, die hier arbeiten.
code hier
>>> lst = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,10]
>>> tup = map(None,lst,lst2) # works fine
>>> tup
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
>>> l3 = [lst, lst2]
>>> l3
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
>>> zip(*l3) # works fine
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
>>> [(i,j) for i in lst and for j in lst2] # does not work
File "<stdin>", line 1
[(i,j) for i in lst and for j in lst2]
^
SyntaxError: invalid syntax
>>>
Habe ich schriftliche Kommentare, wo es funktioniert und wo nicht. Wie kann eine zwei for-loop
gekoppelt werden, in list comprehension
InformationsquelleAutor eagertoLearn | 2013-09-24
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke über die Liste Verstehens als Schleifen. Wie kann man schreiben 2 nicht verschachtelten Schleifen?
Können Sie dies mit etwas seltsame Liste Verständnis:
oder
Aber eigentlich ist es besser, zu verwenden
zip
.Die Liste Verständnis Weg, ist dumm, weil es nur Packungen einer do-nothing-Liste um Verständnis
zip
:Verwenden Sie einfach
zip
, das ist, was es ist. Es macht keinen Sinn, in zwingen, sich selbst zu verwenden Liste Verstehens, wenn Sie nicht alles erreichen.Edit: Falls deine Frage "wie bekomme ich zwei for-Schleifen in einer list comprehension", sollten Sie sich Fragen, dass statt. Die Antwort ist "Sie können nicht zwei PARALLELE
for
Schleifen in einer list comprehension". Jedes mal, wenn Sie zweifor
Klauseln in einer Liste Verständnis, Sie werden geschachtelt werden. Eine Liste Verständnis, wie diese:Funktioniert wie zwei verschachtelte
for
Schleifen:Können Sie nicht, schreiben Sie eine Liste Verständnis, das dies tut:
. . . und Sie brauchen nicht zu, denn Sie haben die
zip
Funktion zu tun, anstatt.(Sie können Sortieren, fake it durch die Nutzung einer Lösung, wie @Roman Pekar ist, aber nicht, dass wirklich zwei
for
Schleifen; es macht einfach ein und verwendet die Werte aus, die man zu erreichen in der anderen Liste.)zip(lst, lst2) [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)] >>> [(i,j) for i, j in zip(lst, lst2)] [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
ich möchte um dies zu erreichen, ohne mitzip
wenn möglichi,j
?[t for t in zip(lst, lst2)]