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
:roll:

Ja, ich *weiß* was sie tun.

Code: Alles auswählen

    return list(chain(*[list_of_lists]))
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.