Listeneinschlussnotation und Wörterbucheinschlussnotation von Python sind praktisch, nicht wahr? Für Aussagen, die tendenziell redundant sind
Listeneinschlussnotation
>>> [i * 2 for i in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Wörterbucheinschlussnotation
>>> {i: i * 2 for i in range(10)}
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
Es ist ein Schuss.
Ich wusste, dass ich, wenn ich versuchen würde, es mit JavaScript zu realisieren, die Listeneinschlussnotation mithilfe von Karte und Filter realisieren könnte, aber da ich wissen konnte, wie man die Wörterbucheinschlussnotation schreibt, werde ich ein Memorandum hinterlassen.
Wenn Sie die Listeneinschlussnotation vor der Wörterbucheinschlussnotation im obigen Beispiel überprüfen
[...Array(10).keys()].map((d) => {return d * 2});
Kann mit Python verarbeitet werden
>>> [i * 2 for i in range(10) if i % 2 == 0]
[0, 4, 8, 12, 16]
Etwas, das eine if-Anweisung enthält, wie z. B., wird überflüssig.
[...Array(10).keys()].filter((d) => d % 2).map((d) => d * 2);
Es kann geschrieben werden als.
Es ist eine bevorzugte Wörterbuch-Einschlussnotation, aber im obigen Python-Beispiel
[...Array(10).keys()].reduce((obj, x) => Object.assign(obj, { [x]: x * 2 }), {})
Es kann geschrieben werden als. Verallgemeinern
array.reduce((obj, x) => Object.assign(obj, { [key_maker(x)]: value_maker(x) }), {})
Es wird. Es ist viel redundanter als Python, aber ich denke, es gibt immer noch mehr Möglichkeiten, es präziser zu schreiben als die for-Anweisung.
Recommended Posts