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.
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 ... 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)
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.
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