Hallo Leute,
ich wusste nicht wirklich wie ich meine Idee formulieren sollte, daher hoffe ich dass jemand versteht worauf ich hinaus möchte. Nehmen wir mal an wir haben eine Liste mit boolschen Ausdrüken, also z.B. 4>5 und nun will man eine Liste die parallel dazu True oder False ausgebt,d.h.:
list1 = [4>5; 4<5]
list2 = [false;true]
Wie kann man das erreichen?
Liste durch Liste entstehen lassen
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wenn man das mal tatsaechlich in gueltigem Python schreibt, sieht man dass es das so nicht geben kann:
Code: Alles auswählen
In [1]: [4 >5, 4<5]
Out[1]: [False, True]Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Ohne Anspruch auf Vollständigkeit oder Richtigkeit. Meine Glaskugel ist etwas stumpf.
PS.: Die Code-Vorschau funktioniert (für mich) leider immer noch nicht.
Code: Alles auswählen
#!/usr/bin/env python3
import operator
class BinaryOperation:
def __init__(self, symbol, function):
self.symbol = symbol
self.function = function
def apply(self, x, y):
return self.function(x, y)
class BinaryExpression:
def __init__(self, operation, x, y):
self.operation = operation
self.x = x
self.y = y
def __str__(self):
return '{x} {op} {y}'.format(x=self.x, y=self.y,
op=self.operation.symbol)
__repr__ = __str__
def apply(self):
return self.operation.apply(self.x, self.y)
EQ = BinaryOperation('==', operator.eq)
LT = BinaryOperation('<', operator.lt)
GT = BinaryOperation('>', operator.gt)
def main():
expressions = [
BinaryExpression(EQ, 3, 4),
BinaryExpression(LT, 5, 6),
BinaryExpression(GT, 3, 4),
]
results = [e.apply() for e in expressions]
print(expressions)
print(results)
if __name__ == '__main__':
main()"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
@bwbg: Du könntest aus ``apply`` noch ``__call__`` machen, dann kannst Du eine Expression direkt aufrufen:
Code: Alles auswählen
results = [e() for e in expressions]encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
