Python liste - bestimmte Indexe anzeigen lassen?
Hallo Leute,
Ich schreibe momentan ein Programm und möchte mir bestimmte Indexe der Liste anzeigen lassen. Zum Beispiel
li = ["Ich", "habe", "eine", "Frage"]
Nun möchte ich mir aus der liste in EINER Anweisung Ich, eine und Frage anzeigen lassen, ohne li[0] + li[2] + li[3] eingeben zu müssen. <- Will halt aus einer längeren Liste mir mehrere Elemente anzeigen lassen.
Ich würde mich echt freuen, wenn mir jemand helfen könnte!
2 Antworten
Direkt ginge das mit Slices, aber nur, wenn die Abstände regelmäßig sind. Etwa wenn du jedes dritte Element rausholen willst:
li[::3]
Alternativ könnte man es mit einer separaten Liste von Indizes zusammenbasteln:
[li[i] for i in (0, 2, 3)]
In beiden Fällen bekommst du wieder eine Liste. Willst du die Elemente z.B. durch Komma oder sonst ein Zeichen getrennt anzeigen, empfiehlt sich str.join(), um einen String zu bauen. Etwa so:
" ".join(li[i] for i in (0, 2, 3))
Alternativ kann man die Liste auch in einzelne Parameter für print() aufdröseln lassen, die werden dann automatisch durch Leerzeichen getrennt ausgegeben:
print(*(li[i] for i in (0, 2, 3)))
Wenn Lücken zwischen dne einzelnen Elementen, die Du extrahieren möchtest, bestehen, dann gibt es dafür keine andere Option, außer vielleicht mit einer comprehension.
Ich teste das gerade mal noch, ob mein Gedanke so funktioniert. Tut es:
[ v for i,v in enumerate(li) if i in (0,2,3)]
So kannst Du eine entsprechende Teilliste erzeugen. Die Frage ist halt, wie Du das weiterverwenden willst.
Der Umweg übers enumerate und die Bedingung ist nicht nötig - man kann einfach nur den Index verwenden, der aus dem Tupel kommt.
Noch 'ne Möglichkeit: