Как вы разделите каждый элемент в списке на int?
Я просто хочу разделить каждый элемент в списке на int.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
Это ошибка:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
Я понимаю, почему я получаю эту ошибку. Но я разочарован тем, что не могу найти решение.
Также попытался:
newList = [ a/b for a, b in (myList,myInt)]
Ошибка:
ValueError: too many values to unpack
Ожидаемый результат:
newList = [1,2,3,4,5,6,7,8,9]
EDIT:
Следующий код дает мне ожидаемый результат:
newList = []
for x in myList:
newList.append(x/myInt)
Но есть ли более простой/быстрый способ сделать это?
Ответы
Ответ 1
Идиоматическим способом было бы использовать понимание списка:
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = [x / myInt for x in myList]
или, если вам нужно сохранить ссылку на исходный список:
myList[:] = [x / myInt for x in myList]
Ответ 2
То, как вы пытались вначале, действительно возможно с помощью numpy:
import numpy
myArray = numpy.array([10,20,30,40,50,60,70,80,90])
myInt = 10
newArray = myArray/myInt
Если вы выполняете такие операции с длинными списками и особенно в каком-либо научном вычислительном проекте, я бы действительно посоветовал использовать numpy.
Ответ 3
>>> myList = [10,20,30,40,50,60,70,80,90]
>>> myInt = 10
>>> newList = map(lambda x: x/myInt, myList)
>>> newList
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Ответ 4
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = [i/myInt for i in myList]