Chcę tylko podzielić każdy element na liście przez int.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
To jest błąd:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
Rozumiem, dlaczego otrzymuję ten błąd. Jestem jednak sfrustrowany, że nie mogę znaleźć rozwiązania.
Próbowałem również:
newList = [ a/b for a, b in (myList,myInt)]
Błąd:
ValueError: too many values to unpack
Spodziewany wynik:
newList = [1,2,3,4,5,6,7,8,9]
EDYTOWAĆ:
Poniższy kod daje mi oczekiwany wynik:
newList = []
for x in myList:
newList.append(x/myInt)
Ale czy jest na to łatwiejszy / szybszy sposób?
Sposób, w jaki spróbowałeś jako pierwszy, jest w rzeczywistości możliwy bezpośrednio z numpy :
Jeśli wykonujesz takie operacje z długimi listami, a zwłaszcza w jakimkolwiek projekcie naukowym, naprawdę radziłbym używać numpy.
źródło
numpy.array([10,20,30,40,50,60,70,80,90], dtype='f')
loat. Inaczej dzieląc przez 3 nie daje zaledwie 3 wskutek zamiast 3.333 ..numpy.array([10.,20,30,40,50,60,70,80,90])
źródło
map()
zwraca obiekt mapy, więc jeśli chcesz otrzymać listę, musisz wyraźnie powiedziećlist()
. A więc w tym przypadku:newList = list(map(lambda x: x/myInt, myList))
źródło
Wersja abstrakcyjna może być:
źródło
źródło