2 votes

Python : Approche de la compréhension des listes en multipliant chaque élément de la liste par un élément spécifique d'une autre liste.

J'essaie de multiplier chacun des éléments du classement avec son "correspondant" dans no_of_photos, comme ceci :

ranking = [12,4,5,1]
no_of_photos = [25,22,11,9]

i=0

for x in ranking:
    print x * no_of_photos[i]
    i+=1

Comment pourrais-je faire cela en utilisant la compréhension de liste et l'incrément i ex :

a  = [x * no_of_photos[i++] for x in ranking]  

J'ai essayé plusieurs fois mais sans succès, des suggestions ?

3voto

jf328 Points 1833

Utiliser zip

a = [r*n for r,n in zip(ranking, no_of_photos)]

2voto

chepner Points 54078

Une alternative à la compréhension d'une liste.

import operator

a = map(operator.mul, ranking, no_of_photos)

Cela combine essentiellement la fermeture éclair avec l'itération, mais en appelant operator.mul est moins efficace que l'utilisation de la fonction intégrée * opérateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X