Seite 1 von 1

Extend Funktion in Einzeiler nutzen

Verfasst: Freitag 10. April 2015, 17:39
von martinjo
Hallo,

ich musste gerade feststellen, dass ich nicht wie ich es wollte verwenden kann, da eine Funktion ist und None zurück gibt. Daher hatte ich Probleme das folgende in eine Zeile zu stecken:

Code: Alles auswählen

storage_name = "Box 40"
code = ["KA"]
code.extend( storage_name.split(" ") )
code = "_".join(code).upper()
Ist nicht wirklich wichtig ob das mehrere Zeilen sind, mich interessiert jedoch wie ich das noch verkürzen kann.
Freue mich über Vorschläge

Re: Extend Funktion in Einzeiler nutzen

Verfasst: Freitag 10. April 2015, 17:50
von EyDu

Code: Alles auswählen

"_".join((KA,) + storage_name.split(" ")).upper()

Re: Extend Funktion in Einzeiler nutzen

Verfasst: Samstag 11. April 2015, 14:02
von Sirius3
@EyDu: Tuple und List kann man nicht addieren.

Aber itertools.chain ist da sehr hilfreich:

Code: Alles auswählen

code = "_".join(itertools.chain(("KA",), storage_name.split()))
obwohl man hier natürlich auch das erste Element per Stringformatierung hinzubasteln kann:

Code: Alles auswählen

code = "KA_{}".format("_".join(storage_name.split()))

Re: Extend Funktion in Einzeiler nutzen

Verfasst: Dienstag 14. April 2015, 09:46
von martinjo
Super, vielen Dank

Wenn ich euch mein Skript mit 1000 Zeilen geben würde, blieben wohl nur 100 übrig :-)