J'utilise Python au travail "Ah, le processus de création d'une liste ici, si vous utilisez la notation d'inclusion de liste, vous pouvez l'écrire de manière concise." Je pense peut-être. Cependant, il y a étonnamment peu de situations où je veux écrire une notation d'inclusion de liste, donc quand j'ai décidé de l'écrire, "Oh, comment écrivez-vous la notation d'inclusion de liste? Eh bien, je n'ai pas le temps et est-ce que je boucle comme d'habitude?" C'est dommage, donc y compris le sens du mémorandum pour moi-même.
Lorsque vous avez entendu ce mot pour la première fois, qu'aviez-vous en tête? Plein de marques. .. .. Pour le dire très simplement, la notation d'inclusion de liste est ** Comment créer des données de liste en une seule ligne ** est.
Cependant, tout ne peut pas être écrit sur une seule ligne, et le processus de création d'une liste dans une boucle peut être écrit sur une seule ligne (bien qu'il y ait un malentendu). J'ai moi-même pensé: «Le code que j'écris au travail est compliqué!», Mais il peut être utilisé de manière inattendue.
data = []
for i in range(10):
data.append(i)
print(data)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in range(10)])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Le résultat de la notation d'inclusion de liste est le même que celui d'une boucle normale. Cependant, la notation d'inclusion de liste nécessite moins de description. Et le code est concis et facile à lire. (C'est difficile à lire à moins que vous ne vous y habituiez.)
Jetons un œil au code inclus dans la liste.
[...]
Comme vous le savez, cela crée une liste, éliminant le besoin de data = []
dans les boucles régulières.
for i in range(10)
C'est la même chose pour les boucles régulières et les inclusions de liste.
Cependant, :
n'est pas requis pour la notation d'inclusion de liste.
i for i in range(10)
Le premier «i» qui apparaît contient la valeur de «i» (le deuxième «i») qui a été récupérée dans la boucle.
La valeur de «i» qui apparaît en premier est réécrite pour chaque boucle.
Le «i» est ajouté à la liste pour le nombre de boucles.
Je pense qu'il est plus facile de comprendre si c'est un peu plus précis, alors je vais l'expliquer dans le cas suivant.
Si vous souhaitez traiter les données de la liste.
Par exemple, si vous voulez ajouter @
à chaque donnée de la liste ['aa', 'b', 'ccc']
.
items = ['aa', 'b', 'ccc']
print([item + '@' for item in items])
# ['aa@', 'b@', 'ccc@']
Je crée une autre liste en ajoutant «@» aux données des «articles». À partir des données de liste, une autre ** donnée de liste a été créée sur une ligne **.
Lorsque vous souhaitez ajouter un autre caractère au milieu d'une chaîne de caractères selon une règle fixe telle que le traitement des données.
Par exemple, si vous voulez ajouter -
aux données ʻabcdefgh` pour chaque caractère.
items = 'abcdefgh'
print('-'.join([item for item in items]))
# a-b-c-d-e-f-g-h
Ici, ** les données de liste sont créées à partir d'une chaîne de caractères sur une ligne. ** ** Les données de cette liste sont «jointes avec» pour les renvoyer à une chaîne.
[Une addition] J'ai reçu un commentaire, je vais donc l'ajouter. Cela était possible sans utiliser la notation d'inclusion de liste. Vous n'avez pas à le gaspiller.
items = 'abcdefgh'
print('-'.join(items))
# a-b-c-d-e-f-g-h
Au fait, si vous voulez ajouter -
tous les deux caractères.
items = 'abcdefgh'
print('-'.join([items[i*2: i*2+2] for i in range(int(len(items)/2))]))
# ab-cd-ef-gh
C'est un peu surchargé, alors est-ce que c'est comme ça?
items = 'abcdefgh'
loop_count = int(len(items)/2)
print('-'.join([items[i*2: i*2+2] for i in range(loop_count)]))
# ab-cd-ef-gh
[Une addition] J'ai également reçu un commentaire, je vais donc l'ajouter. Dans le cas ci-dessus, le compteur «i» est utilisé, de sorte qu'un accès hors de portée peut se produire. C'est un style d'écriture qui l'évite.
items = 'abcdefgh'
print('-'.join(ch1+ch2 for ch1, ch2 in zip(items[::2], items[1::2])))
# ab-cd-ef-gh
J'ai trouvé que le dernier caractère n'est pas sorti lorsque le nombre de caractères est impair, même si le compteur est utilisé ou non. J'utiliserais un compteur, mais j'ai pu l'éviter.
import math
items = 'abcdefghi'
loop_count = math.ceil(len(items) / 2)
print('-'.join([items[i*2: i*2+2] for i in range(loop_count)]))
# ab-cd-ef-gh-i
Dans le cas 1, les données de la liste sont traitées pour créer une autre liste. Le cas 2 est un exemple de traitement d'une chaîne de caractères pour créer une liste.
Les deux cas peuvent être réalisés à l'aide de boucles, Les inclusions de liste rendent votre code simple et concis.
Recommended Posts