La notation d'inclusion de liste et la notation d'inclusion de dictionnaire de Python sont pratiques, n'est-ce pas? Pour les déclarations qui ont tendance à être redondantes
Notation d'inclusion de liste
>>> [i * 2 for i in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Notation d'inclusion de dictionnaire
>>> {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}
C'est un coup.
Je savais que si j'essayais de le réaliser avec JavaScript, je pourrais réaliser la notation d'inclusion de liste en utilisant map et filter, mais comme j'ai pu savoir comment écrire la notation d'inclusion de dictionnaire, je laisserai un mémorandum.
Si vous vérifiez la notation d'inclusion de liste avant la notation d'inclusion de dictionnaire, dans l'exemple ci-dessus
[...Array(10).keys()].map((d) => {return d * 2});
Peut être traité avec Python
>>> [i * 2 for i in range(10) if i % 2 == 0]
[0, 4, 8, 12, 16]
Quelque chose qui contient une instruction if, comme, sera redondant,
[...Array(10).keys()].filter((d) => d % 2).map((d) => d * 2);
Il peut être écrit sous la forme.
C'est une notation d'inclusion de dictionnaire préférée, mais dans l'exemple Python ci-dessus
[...Array(10).keys()].reduce((obj, x) => Object.assign(obj, { [x]: x * 2 }), {})
Il peut être écrit sous la forme. Généraliser
array.reduce((obj, x) => Object.assign(obj, { [key_maker(x)]: value_maker(x) }), {})
Il devient. C'est beaucoup plus redondant que Python, mais je pense qu'il existe encore plus d'opportunités de l'écrire de manière plus concise que d'utiliser l'instruction for.
Recommended Posts