LC mit Bedingungen, gehts einfacher?
Verfasst: Samstag 23. Februar 2008, 23:58
Hallo zusammen!
Ich möchte gerne eine Liste durch Einschränkung einer anderen Liste erzeugen. Mein gegenwärtiger Code sieht etwa so aus:
Hier wird eine Liste "liste2" aus der Liste "liste1" erzeugt, wobei zwei Bedingungen erfüllt sein müssen. Ich würde mir gerne die Definition der Funktion "f" ersparen, stattdessen einen lambda-Ausdruck und filter() verwenden oder was auch immer. Die Methode vals() soll aber auch nur einmal pro Element aufgerufen werden. Leider erlaubt Lambda keine Zuweisung. Hat jemand eine Idee für besseren Code?
Liebe Grüße
GnuShi
Ich möchte gerne eine Liste durch Einschränkung einer anderen Liste erzeugen. Mein gegenwärtiger Code sieht etwa so aus:
Code: Alles auswählen
class A(object):
def __init__(self, x, y):
self.x = x
self.y = y
def vals(self):
return (self.x, self.y)
liste1 = [A(1, 1), A(2, 2), A(7, 9)]
def f(s, a, b):
v = s.vals()
return v[0] == a and v[1] == b
liste2 = [s for s in liste1 if f(s, 7, 9)]
for o in liste2:
print o.vals()
Liebe Grüße
GnuShi