Suche in Liste mit Platzhalter

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
GEEN55
User
Beiträge: 10
Registriert: Mittwoch 16. Januar 2019, 13:41

Hallo Zusammen,

ich möchte in einer Liste z.B.

Code: Alles auswählen

 list = [(32, 32), (31, 31), (31, 30), (31, 29), (31, 28), (31, 27), (31, 26), (32, 25), (33, 24), (34, 23), (35, 22), (36, 21), (37, 20), (38, 19), (39, 18), (40, 17), (41, 16), (42, 15), (43, 15), (44, 15), (45, 15), (46, 15), (47, 15), (48, 15), (49, 15)] 
alle Wert finden die folgenden Muster entsprechen (31,*) wobei * für jeden beliebigen Wert steht.

Code: Alles auswählen

 Pseudocode
 
 treffer_liste = (31, *) in list
 
 
Hat jemand eine Idee wie ich das Problem am einfachsten lösen kann?

Danke und Gruß,
GEEN
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@GEEN55: Mit einer „list comprehension“:

Code: Alles auswählen

treffer_liste = [(a, b) for a, b in liste if a == 31]
Man sollte den Namen `list` nicht an was anderes binden als die eingebaute Funktion mit dem Namen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
GEEN55
User
Beiträge: 10
Registriert: Mittwoch 16. Januar 2019, 13:41

Suuuuuuuuuuuuper ... Danke für Deine tolle Hilfe!
Jetzt kann ich mich dem nächsten Problem stellen :-)
klausi92
User
Beiträge: 2
Registriert: Mittwoch 16. Januar 2019, 22:29

Wenn ich mich hier kurz anhängen dürfte, aht auch was mit einer Liste zu tun. Und zwar muss ich eine textdatei einlesen, bei der die Zahlen von 1 bis 100 jeweils in einer eigenen Zeile stehen.
fp = open("data1.txt", "r")
liste = (fp.readlines()) #jede zeile is ein listenelement
liste = [line.rstrip() for line in liste] #\n bei jedem listenelement entfernen
Das ist mein bisheriger Ansatz, ich soll nämlich die ganzen Zahlen in eine Liste bringen. Jetzt habe ich noch das Problem das vor und nach der Zahl jeweils noch das ' Zeichen steht. Wie kann ich dieses entfernen, sodass ich eine Liste mit nur noch den Werten habe?

Dazu soll ich auch noch den arithmetischen Mittelwert ermitteln. Hätte den Ansatz gehabt, dass ich die summe der Liste durch die Länge teile, aber das funktioniert ja aktuell aufgrund der ' nicht. Ansonsten müsste das dann ja funktionieren, oder?

Danke schonmal :)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn da immer Anfuehrungszeichen dran sind, dann kannst du doch einfach die Zahl per slicing ( string[anfang:ende] ) rausholen. Und du musst sie dann natuerlich in ein Integer konvertieren.
klausi92
User
Beiträge: 2
Registriert: Mittwoch 16. Januar 2019, 22:29

Danke habs jetzt einfach mit ner Umwandlung gemacht, also die strings in ne einfache int zahl umgewandelt.
Der Mittelwert funktioniert dann.

Danke :)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

In der Datei sind also gar keine ', sondern nur in der Darstellung der Liste mit Strings.
Das wäre gut, wenn Du das auch so beschreiben würdest, sonst gibt es nur Verwirrung.
Dateien öffnet man mit dem with-Statement, die Klammern um fp.readlines() sind überflüssig und das ganze readlines noch dazu, weil man auch über File-Objekte direkt iterieren kann. Das rstrip ist auch überflüssig, weil man auch Strings mit Leeraum in Zahlen umwandeln kann:

Code: Alles auswählen

with open("data1.txt") as lines:
    numbers = [int(n) for n in lines]
Antworten