204 votes

Comment diviser chaque élément dans une liste par un entier ?

Je veux simplement diviser chaque élément d'une liste par un entier.

myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt

Voici l'erreur:

TypeError: unsupported operand type(s) for /: 'list' and 'int'

Je comprends pourquoi je reçois cette erreur. Mais je suis frustré de ne pas trouver de solution.

J'ai également essayé:

newList = [ a/b for a, b in (myList,myInt)]

Erreur:

ValueError: too many values to unpack

Résultat attendu:

newList = [1,2,3,4,5,6,7,8,9]

EDIT:

Le code suivant me donne le résultat attendu :

newList = []
for x in myList:
    newList.append(x/myInt)

Mais y a-t-il un moyen plus simple/rapide de le faire?

0voto

Richard Points 21
myInt=10
myList=[tmpList/myInt for tmpList in range(10,100,10)]

0voto

i_th Points 1150

J'ai exécuté certaines des réponses pour voir quelle est la manière la plus rapide pour un grand nombre. Ainsi, j'ai découvert que nous pouvons convertir l'entier en un tableau et obtenir les résultats corrects et c'est plus rapide.

  arrayint=np.array(myInt)
  newList = myList / arrayint

Voici une comparaison de toutes les réponses ci-dessus

import numpy as np
import time
import random
myList = random.sample(range(1, 100000), 10000)
myInt = 10
start_time = time.time()
arrayint=np.array(myInt)
newList = myList / arrayint
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = np.array(myList) / myInt
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = [x / myInt for x in myList]
end_time = time.time()
print(end_time-start-time)
start_time = time.time()
myList[:] = [x / myInt for x in myList]
end_time = time.time()
print(end_time-start-time)
start_time = time.time()
newList = map(lambda x: x/myInt, myList)
end_time = time.time()
print(end_time-start-time)
start_time = time.time()
newList = [i/myInt for i in myList]
end_time = time.time()
print(end_time-start-time)
start_time = time.time()
newList  = np.divide(myList, myInt)
end_time = time.time()
print(end_time-start-time)
start_time = time.time()
newList  = np.divide(myList, myInt)
end_time = time.time()
print(end_time-start-time)

0voto

liste = [2,4,8]  
nouvelle_liste = [x//2 for x in liste]  
print(nouvelle_liste)  

Sortie :

[1, 2, 4]

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