Ich habe diese Liste erstellt; jedes Element ist eine Zeichenfolge, die Kommas (in einigen Fällen) und Colon (immer) enthält:Verwenden von Python-Funktionen höherer Ordnung zum Bearbeiten von Listen
dinner = [
'cake,peas,cheese : No',
'duck,broccoli,onions : Maybe',
'motor oil : Definitely Not',
'pizza : Damn Right',
'ice cream : Maybe',
'bologna : No',
'potatoes,bacon,carrots,water: Yes',
'rats,hats : Definitely Not',
'seltzer : Yes',
'sleeping,whining,spitting : No Way',
'marmalade : No'
]
Ich möchte erstellen Sie eine neue Liste von dem oben wie folgt:
['cake : No',
'peas : No',
'cheese : No',
'duck : Maybe',
'broccoli : Maybe',
'onions : Maybe',
'motor oil : Definitely Not',
'pizza : Damn Right',
'ice cream : Maybe',
'bologna : No',
'potatoes : Yes',
'bacon : Yes',
'carrots : Yes',
'water : Yes',
'rats : Definitely Not',
'hats : Definitely Not',
'seltzer : Yes',
'sleeping : No Way',
'whining : No Way',
'spitting : No Way',
'marmalade : No']
Aber ich Ich würde gerne wissen, ob/wie es möglich ist, dies in einer oder zwei Zeilen mit effizientem Code zu tun, der hauptsächlich die Funktionen höherer Ordnung von Python verwendet. Ich habe es versucht:
reduce(lambda x,y: x + y, (map(lambda x: x.split(':')[0].strip().split(','), dinner)))
... produziert diese:
['cake',
'peas',
'cheese',
'duck',
'broccoli',
'onions',
'motor oil',
'pizza',
'ice cream',
'bologna',
'potatoes',
'bacon',
'carrots',
'water',
'rats',
'hats',
'seltzer',
'sleeping',
'whining',
'spitting',
'marmalade']
... aber ich bin zu kämpfen mit dem Stück jeder Zeichenfolge anhängt nach dem Doppelpunkt auf jedem zurück Artikel.
Warum sind Sie besorgt über die Codelänge? Dies wäre auf lange Sicht viel weniger haltbar. – jpmc26
@ jpmc26 Ich verstehe, woher du kommst und stimmst zu. Dies ist für mich eher eine explorative Übung, um die Fähigkeiten von Pythons hofs zu verstehen. – dstar