Je veux juste diviser chaque élément d'une liste par un int.
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 pouvoir trouver de solution.
É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]
ÉDITER:
Le code suivant me donne mon résultat attendu:
newList = []
for x in myList:
newList.append(x/myInt)
Mais y a-t-il un moyen plus simple / plus rapide de le faire?
La façon dont vous avez essayé le premier est en fait directement possible avec numpy :
Si vous faites de telles opérations avec de longues listes et en particulier dans tout type de projet de calcul scientifique, je vous conseillerais vraiment d'utiliser numpy.
la source
numpy.array([10,20,30,40,50,60,70,80,90], dtype='f')
pour loat. Sinon, diviser par 3 vous donnerait seulement 3 comme résultat au lieu de 3.333 ..numpy.array([10.,20,30,40,50,60,70,80,90])
la source
map()
renvoie un objet de carte, donc si vous voulez une liste, vous devez le dire explicitementlist()
. Donc dans ce cas:newList = list(map(lambda x: x/myInt, myList))
la source
La version abstraite peut être:
la source
la source