Tupel innerhalb einer Liste,Iterieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Angenommen ich habe eine liste dessen Elemente nur aus Tupeln bestehen also vom aussehen her so :

liste_aus_tupel = [(A,b,c),(d,e,f,),.....,(x,y,z)]

Alles strings innerhalb der liste

Wie ist es mir möglich nur jedes 2. Element ausgeben zu lassen ?

Ich bin mir sicher irgendwas mit Index muss benutzt werden.
Allerdings kriege ich es nur hin das 2. Element aus dem 1. Tupel zu "filtern", danach tut sich nichts mehr.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@d_rose: was meinst Du mit "Alles Strings innerhalb der liste"? Alles Strings innerhalb der Tuple?

Wenn Du schon weißt, wie man das 2. Element aus dem ersten Tuple bekommt, mußt Du nur noch eine Schleife über alle Tuple schreiben.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

d_rose hat geschrieben: Dienstag 13. November 2018, 10:22 Wie ist es mir möglich nur jedes 2. Element ausgeben zu lassen ?
So wie ich dich verstanden habe, suchst du meine_liste[::2].

Oder willst du vom jeweiligen Tupel das zweite Element haben?
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

vom jeweiligen Tupel das 2. Element
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Sirius3 hat geschrieben: Dienstag 13. November 2018, 11:05 @d_rose: was meinst Du mit "Alles Strings innerhalb der liste"? Alles Strings innerhalb der Tuple?

Wenn Du schon weißt, wie man das 2. Element aus dem ersten Tuple bekommt, mußt Du nur noch eine Schleife über alle Tuple schreiben.
Also die Tupel innerhalb der liste enthalten nur Strings.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@d_rose: Wo ist jetzt das konkrete Problem? Du musst halt eine Schleife über die Elemente der Liste schreiben, und von jedem Element, also Tupel, innerhalb der Schleife das 2. Element ausgeben. Wie sieht denn Dein Code dafür aus, bisher?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Code: Alles auswählen

for line in liste :
		if line [1] == 2.parameter der Funktion :
		 	return True 
		 else :
		 	return False 
also die Funktion nimmt 2 Parameter entgegen ein mal die liste mit tupeln und ein string; es soll falls der string sich am Index [1] befindet True ausgeben werden und wenn nicht dann halt false aber sobald ich die else Zeile mit return false einfügen gibt er mir nur noch False aus obwohl der string in der Zeichenkette existiert.

die einrücken ist falsch ich komm mit diesen Quote code nicht klar haha
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Das wird nun immer wirscher. Ein return innerhalb einer Schleife steigt halt direkt aus, wenn es ausgeführt wird. Der Teil mit dem else muss wahrscheinlich hinter die Schleife gesetzt werden. Andernfalls hat der Programmfluss ja gar keine Chance, mehr als nur einen Iterationsschritt zu durchlaufen. Und dann kann man das else übrigens auch weglassen.

Aber nochmal als Rückfrage: Willst du die Schleife beenden, sobald irgendein Element aus der Liste den String enthält oder willst du für jedes einzelne Listenelement mittels True oder False kennzeichnen, ob das Element den String enthält?
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Ich will sobald das Element in der Liste vorhanden ist true raus kommt und wenn nicht false
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Code: Alles auswählen

def check_for_needle(haystack, needle):
    return any(item[1] == needle for item in haystack)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Ok , kann ich einfach so hinter dem Return ne Schleife einbauen ?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Die Schleife ist in dieser Form ein sogenannter Generator und der kann als Argument an any() gegeben werden. any() macht daraus dann einen Wahrheitswert, je nachdem ob die Schleifenbedingung zutrifft. Rein technisch gesprochen liefert any() True, wenn mindestens ein Vergleich True ergibt, andernfalls False.
Zuletzt geändert von snafu am Dienstag 13. November 2018, 16:16, insgesamt 1-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@d_rose: Nein, hinter ``return`` muss ein Ausdruck stehen der zu einem Wert ausgewertet wird. Dem Wert der dann vom ``return`` an den Aufrufer zurückgegeben wird. Hier ist das ein Aufruf der `any()`-Funktion mit einem Generatorausdruck als Argument. Beides ist in der Python-Dokumentation dokumentiert.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Ok vielen Dank , ich will hier echt niemanden auf den Sack gehe ich bin erst 4 Wochen dabei, deswegen fällt es mir nicht so leicht meine Fragen so präzise wie möglich zu stellen, aber irgendwo muss man ja seinem Start haben
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Alles gut! Wenn du mir ernsthaft auf den Sack gehen würdest, dann würde ich überhaupt nicht antworten. ;-)
Antworten