Eu só quero dividir cada elemento em uma lista por um int.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
Este é o erro:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
Entendo por que estou recebendo esse erro. Mas estou frustrado por não encontrar uma solução.
Também tentei:
newList = [ a/b for a, b in (myList,myInt)]
Erro:
ValueError: too many values to unpack
Resultado esperado:
newList = [1,2,3,4,5,6,7,8,9]
EDITAR:
O código a seguir me fornece o resultado esperado:
newList = []
for x in myList:
newList.append(x/myInt)
Mas existe uma maneira mais fácil / rápida de fazer isso?
A maneira como você tentou primeiro é realmente diretamente possível com o numpy :
Se você fizer essas operações com listas longas e, especialmente, em qualquer tipo de projeto de computação científica, eu realmente recomendaria o uso de numpy.
fonte
numpy.array([10,20,30,40,50,60,70,80,90], dtype='f')
para loat. Caso contrário, dividir por 3 daria a você apenas 3 como resultado, em vez de 3.333 ..numpy.array([10.,20,30,40,50,60,70,80,90])
fonte
map()
retorna um objeto de mapa, portanto, se você deseja uma lista, precisa explicitamente dizerlist()
. Portanto, neste caso:newList = list(map(lambda x: x/myInt, myList))
fonte
A versão abstrata pode ser:
fonte
fonte