Notation qui peut être utilisée lors de la création de listes et de dictionnaires avec python. Étant donné que python a une boucle for lente, vous pouvez utiliser la notation d'inclusion lors de la création de listes et de dictionnaires pour la rendre beaucoup plus rapide.
Lorsque vous faites une liste, cela ressemble à ceci.
new_list = [f(myiter) for myiter in origin_list]
Vous pouvez également créer un dictionnaire en remplaçant [] par {}.
new_dict = {indexes[myiter]:f(myiter) \
for myiter in origin_list}
Le modèle de base est le suivant.
[(Expression utilisant un itérateur) pour(iterater)in (objet itérable d'origine)]
Si vous n'en utilisez qu'un si, ajoutez ** à la fin **.
Extraire les nombres impairs jusqu'à 10
odd = [i for i in range(10) if i%2 != 0]
# [1,3,5,7,9]
À ce moment, si fonctionne comme un filtre.
Si vous utilisez également else, ajoutez ** avant ** pour.
C'est bizarre"odd", Même"even"rends le
xx = ["even" if i%2==0 else "odd" for i in range(10)]
# ['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']
La raison pour laquelle le if doit être préfixé est que le if à ce moment fait partie de l'opérateur ternaire, contrairement au if précédent.
"even" if i% 2 == 0 else "odd" ```est une expression, et elle sera répétée avec for.
~~ Vous ne pouvez pas utiliser plusieurs autres. ~~ Elif ne peut pas être utilisé lors de la création de plusieurs branches conditionnelles. Ceci peut être réalisé en utilisant plusieurs if else.
xx = [i+j for i in i_list for j in j_list]
xx = [[i+j for i in range(3)] for j in range(5)]
Si vous souhaitez utiliser des opérations numpy, transmettez-le à np.array.
xx = np.array([[i+j for i in range(3)] for j in range(5)])
numpy.array est assez intelligent, il peut donc mouler correctement les doubles, triples et quadruples.
Disposer avec (0,0), (1,1), (2,2), ...
xx = [i+j for i,j in zip(mylist_i,mylist_j)]
Vous êtes peut-être venu jusqu'ici et vous êtes déjà "Euh". Puisqu'il n'y a pas de règle pour les sauts de ligne dans la notation d'inclusion de liste, une ligne devient longue et obscurcie. Donc, s'il s'allonge, assurez-vous d'insérer un saut de ligne approprié **.
Dans le cas de VSCode, si vous mettez \ dans la première ligne, il sera bien formaté par la suite. En fait, il fonctionne avec ou sans .
#Saut de ligne absolu lors de l'utilisation de if
xx = ["even" if i % 2 == 0 else "odd" \
for i in range(10)]
#Si l'expression est longue, insérez une pause dans la partie longue
zz = [np.sin(xx) + np.random.rand(xx.shape) \
for xx in list_xx]
Recommended Posts