Seite 1 von 1
Listenelemente (strings)
Verfasst: Montag 23. August 2010, 16:41
von breathe_easy
Hallo einfach mal kurz code dann wird das Problem denke ich schon klar.
was muss ich tun damit aus den Listenelementen selbst eine Liste wird und nicht so aussieht:
["s","t","r", ....] sondern ["string1"]
Danke!!!!
Re: Listenelemente (strings)
Verfasst: Montag 23. August 2010, 16:48
von EyDu
Hallo.
So?
Code: Alles auswählen
>>> liste = ["string1", "string2", "string3"]
>>> map(lambda x: [x], liste)
[['string1'], ['string2'], ['string3']]
Re: Listenelemente (strings)
Verfasst: Montag 23. August 2010, 16:50
von breathe_easy
Vielen Dank! Genau so!
Ich wäre dir nur sehr dankbar wenn du ein paar Worte dazu sagen könntest, oder einen Weg ohne lambda findest, denn das verstehe ich garnicht!
Re: Listenelemente (strings)
Verfasst: Montag 23. August 2010, 16:53
von EyDu
Das sollte als Hinweis genügen:
Code: Alles auswählen
>>> liste = ["string1", "string2", "string3"]
>>> def spam(x):
... return [x]
...
>>> map(spam, liste)
[['string1'], ['string2'], ['string3']]
Als nächstes schaust du dann in die Dokumentation zu lambda und liest die Details nach

Re: Listenelemente (strings)
Verfasst: Montag 23. August 2010, 16:56
von breathe_easy
Danke!
Re: Listenelemente (strings)
Verfasst: Montag 23. August 2010, 17:07
von Hyperion
Wobei mir der Anwendungsfall schon kurios vorkommt. Wozu braucht man ein-elementige Listen? (Zumal, wenn man augenscheinlich mit den Grundlagen eh noch Probleme hat...) Das kommt mir ein wenig spanisch vor.
Re: Listenelemente (strings)
Verfasst: Samstag 28. August 2010, 00:15
von pillmuncher
Hyperion hat geschrieben:Wobei mir der Anwendungsfall schon kurios vorkommt. Wozu braucht man ein-elementige Listen?
Vielleicht für Monaden?
Code: Alles auswählen
def join(mx):
assert len(mx) == 1
return mx[0]
def compose(f, g):
return lambda x:g(f(x))
def flatmap(mxs, f):
return map(compose(f, join), mxs)
bind = flatmap
def unit(x):
return [x] # <===========
zero = []
def plus(mxs, mys):
mzs = bind(mxs, unit)
mzs.extend(bind(mys, unit))
return mzs
assert plus(unit(5), zero) == unit(5)
def mul2(x):
return unit(x * 2)
def add3(x):
return unit(x + 3)
a = unit(1)
b = unit(7)
c = plus(a, b)
d = bind(c, mul2)
e = bind(d, add3)
print c
print d
print e
# Hier die Monaden-Gesetze:
assert bind(unit(1), mul2) == mul2(1) # links-assoziativ
assert bind(unit(1), unit) == unit(1) # rechts-assoziativ
assert bind(bind(unit(1), mul2), add3) == bind(unit(1), lambda x:bind(mul2(x), add3)) # kommutativ