Seite 1 von 1
Verfasst: Donnerstag 13. November 2008, 18:29
von name
str1442 hat geschrieben:@Y0Gi
?
Code: Alles auswählen
In [1]: def f(element): print element
...:
In [2]: f(*("Dummy",))
Dummy
In [3]: f(*["Dummy"])
Dummy
*("Dummy",) == "Dummy".
Was die Sternchen machen, weiß ich
Aua! Sie geben von der liste jeweils ein element als ein argument zur Funktion.
Verfasst: Donnerstag 13. November 2008, 18:40
von str1442
Ja, ich *weiß* was sie tun.
Und wo ist das hier bitte sinnvoll angewandt?.
>>> from itertools import chain
>>> list(chain(range(3), range(3, 7)))
[0, 1, 2, 3, 4, 5, 6]
>>> list(chain(*[range(3), range(3, 7)]))
[0, 1, 2, 3, 4, 5, 6]
Verfasst: Donnerstag 13. November 2008, 20:06
von Y0Gi
str1442: Ah, ich glaube mir ist klar, warum du diesen speziellen Fall genannt hast. Die Sternchen-Syntax hatte ich nur fürs allgemeine Verständnis mal ausgeführt.
Fakt ist ja, wie ich schon schrieb, dass das `itertools`-`flatten`-Rezept nicht für diesen Anwendungsfall passt und daher auch nicht mit der Eingabe umgehen kann. Ich hatte mich auch nicht darüber gewundert, wo der "Fehler" liegt (den ich ja "behoben" habe), sondern war eben überrascht, dass `flatten` nicht mit nicht-Listen als Elemente der äußeren Liste umgehen kann.