Notation inclusive de Python (à propos de l'expression de liste et de générateur) [supplémentaire]

introduction

Je pense que la notation d'inclusion de Python est célèbre (?) En tant que style d'écriture propre à Python. Cette fois, je résumerai la partie de base d'une telle notation d'inclusion. Plus précisément, il s'agit de la notation d'inclusion de liste et de l'expression du générateur.

Notation d'inclusion de liste

Je pense que la notation d'inclusion de liste est particulièrement célèbre.

python


print([i for i in range(0, 10)])

Cela seul produira une liste contenant des nombres de 0 à 9.

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

C'est très facile à faire. Bien sûr, beaucoup plus de choses sont possibles.

python


print('¥n'.join(['FizzBuzz' if i%15 == 0 else
                 'Fizz' if i%3 == 0 else
                 'Buzz' if i%5 == 0 else
                 str(i) for i in range(1, 101)]))

C'est Fizz Buzz. Le premier à faire lorsque vous commencez à apprendre une nouvelle langue. Les nombres de 1 à 100 sont affichés dans l'ordre, Fizz est affiché pour les multiples de 3, Buzz est affiché pour les multiples de 5 et FizzBuzz est affiché pour les multiples de 3 et 5 au lieu de nombres. Au fait, si vous l'exécutez, 1 à 100 sera affiché un par un avec des sauts de ligne. C'est la partie de '\ n'.join.

Je veux dire, c'est quelque chose que j'écris moi-même, mais c'est un code assez agressif ... C'est, la prochaine fois que je présenterai une meilleure façon d'écrire, alors j'ose l'écrire comme ça. Allons-y ensuite.

Type de générateur

Type de générateur ... Un mot difficile est apparu ... Pour élaborer sur ce qu'est une expression de générateur, nous devons expliquer ce qu'est un générateur, et pour expliquer un generalta, nous devons expliquer un itérateur, et expliquer davantage un itérateur qs. Wow drftgy Fujiko lp; @: (Je peux le publier comme un autre article la prochaine fois)

En termes simples, c'est un gars pratique qui peut créer rapidement une fonction entre parenthèses et l'utiliser rapidement.

python


print(i for i in range(0,10))

Cela ressemble presque à la notation d'inclusion de liste précédemment. La différence est qu'il n'y a pas de []. À ce moment, comment est-il produit?

<generator object <genexpr> at 0x10d747b48>

Cliquez ici pour la sortie. C'est complètement différent de la liste précédente! Cela n'a aucun sens, alors n'oubliez pas [] lorsque vous écrivez en inclusion.

Cependant, il y a un certain nombre de fois où cette formule de générateur est pratique.

print('¥n'.join((i%3 == 0)*'Fizz' + (i%5 == 0)*'Buzz' or str(i) for i in range(1, 101)))

Oui. Je pense que la quantité d'informations sur une ligne est assez importante, mais du code a été écrit sur une seule ligne. Comme vous pouvez le deviner, c'est FizzBuzz. La sortie sera exactement dans le même format qu'avant.

Vous ne pouvez pas l'écrire comme ça, en utilisant la notation d'inclusion de liste! (N'est-ce pas?) Vous pouvez forcer le code au-dessus de la notation d'inclusion de liste sur une seule ligne, mais ... je déteste que ce soit difficile à voir. (Étant donné que la notation d'inclusion de liste et l'expression du générateur dépassent 80 caractères, un saut de ligne est en fait nécessaire)

Impressions

Cette fois, nous n'avons introduit que deux types, mais il semble que vous puissiez faire beaucoup avec cela aussi! Par-dessus tout, j'aime la notation d'inclusion car elle ressemble à du code pythonique. Après cela, je pense qu'il est préférable d'utiliser activement l'endroit où le type de générateur peut être utilisé. S'il s'agit d'une notation d'inclusion de liste, cela créera une liste une par une.

c'est tout.

Post-scriptum (2015/12/2)

print('¥n'.join((i%3 == 0)*'Fizz' + (i%5 == 0)*'Buzz' or str(i) for i in range(1, 101)))

Vous ne pouvez pas écrire de cette façon ou utiliser la notation d'inclusion de liste! (N'est-ce pas?)

Je suis désolé, je peux.

print('¥n'.join([(i%3 == 0)*'Fizz' + (i%5 == 0)*'Buzz' or str(i) for i in range(1, 101)]))

Vous obtiendrez toujours exactement la même sortie.

J'ai fait une grosse erreur de ne pas faire d'erreur ici, et j'ai même l'impression que le but de cet article a été complètement perdu ... Je ferai attention à l'avenir.

Recommended Posts

Notation inclusive de Python (à propos de l'expression de liste et de générateur) [supplémentaire]
Inclusions de tapple Python et expressions de générateur
Python> Compréhension / Notation inclusive> Compréhension de liste
Vitesse de notation d'inclusion de liste en Python
Liste Python et tapples et virgules
Notation et générateur d'inclusion de liste Python
À propos de Python et des expressions régulières
Différence entre list () et [] en Python
A propos des modules Python Primer et des expressions conditionnelles
Notation d'inclusion Python
Notation d'inclusion Python
Notation d'inclusion de liste
[Python] liste
Chevauchement d'expressions régulières en Python et Java
[Introduction à Udemy Python3 + Application] 63. Notation d'inclusion du générateur
différence entre les instructions (instructions) et les expressions (expressions) en Python
Structure de données Python et implémentation interne ~ Liste ~
Différence entre append et + = dans la liste Python
[Python Iroha] Différence entre List et Tuple
Élément de mémoire Python efficace 7 Utilisez la notation d'inclusion de liste au lieu de la carte et du filtre
J'ai mesuré la vitesse de la notation d'inclusion de liste, pendant et pendant avec python2.7.
[Python] Compréhension de liste Différentes façons de créer une liste
bases de python: liste
[Introduction à Udemy Python3 + Application] 60. Notation d'inclusion de liste
[Python] Fonction de générateur
liste et somme
list et numpy
[Python] Expressions régulières Expressions régulières
Liste de code Python à déplacer et à mémoriser
Remarque: Notation d'inclusion de liste
Manipulation de liste Python
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
Filtrer, mapper, réduire avec js et python (il existe également des expressions de flèche, des expressions lambda et des expressions d'inclusion)
[Python] AGC043A (problème de lecture et de DP) [At Coder]
Note d'apprentissage Python de Mayungo: liste d'histoires et de liens
Implémentation de List et Bool en Python et SQLite3 (note personnelle)
Comment écrire à l'aide d'une expression lambda et d'une fonction de filtre et comment écrire à l'aide de la notation d'inclusion de liste
Implémentation d'un générateur en utilisant Python> link> yield et next ()> yield
compréhension de liste car operator.methodcaller ne peut pas être utilisé avec python 2.5
[Python] Comment trier un dict dans une liste et une instance dans une liste
Notation d'inclusion Python3 (liste, dictionnaire) que j'ai vue quelque part
[python] Compresser et décompresser
Liste des modules python
Python> liste> extend () ou + =
Astuces Python et Numpy
[Python] pip et roue
FizzBuzz en notation d'inclusion de liste
Itérateur et générateur Python
Liste de filtres en Python
Paquets et modules Python
Intégration Vue-Cli et Python
liste assertXXX unittest python
Ruby, Python et carte
Notation d'inclusion de générateur Notation d'inclusion Taple
Mémo de type Liste / Dictionnaire Python3
[Mémo] Tri de liste Python3
entrée et sortie python
Liste des API Python pour OpenCV3