Il s'agit d'un mémo écrit du livre efficace python d'O'Reilly Japan. https://www.oreilly.co.jp/books/9784873117560/ P21~23
** Extraire le nom avec les caractères les plus longs **
names = ['Cecilia', 'Lise', 'Marie' ]
letters = [len(n) for n in names]
longest_name = None
max_letters = 0
#Modèle 1
for i in range(len(names)):
count = letters[i]
if count > max_letters:
longest_name = names[i]
max_letters = count
print(longest_name)
>>>
Cecilia
Il n'y a pas de problème syntaxique, mais on voit mal qu'on y accède deux fois avec l'indice de la liste. De plus, si la liste est extrêmement longue, il n'est pas écologique d'élargir tout le contenu, je voudrais donc la résoudre avec un générateur.
for name, count in zip(names, letters): #Faites attention à la taille de l'élément zip
if count > max_letters:
longest_name = name
maxx_letters = count
print(longest_name)
>>>
Cecilia
Si vous utilisez zip (), la liste des contenus est retournée en parallèle par le générateur, il s'agit donc d'une spécification conviviale pour la mémoire. En outre, il est plus facile à voir qu'autre chose.
Cependant, si les éléments du zip ne correspondent pas. Notez que l'ensemble se terminera lorsque l'itérateur le plus court sera épuisé.
Recommended Posts