Ich möchte nur jedes Element in einer Liste durch ein int teilen.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
Dies ist der Fehler:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
Ich verstehe, warum ich diesen Fehler erhalte. Aber ich bin frustriert, dass ich keine Lösung finden kann.
Auch versucht:
newList = [ a/b for a, b in (myList,myInt)]
Error:
ValueError: too many values to unpack
Erwartetes Ergebnis:
newList = [1,2,3,4,5,6,7,8,9]
BEARBEITEN:
Der folgende Code gibt mir mein erwartetes Ergebnis:
newList = []
for x in myList:
newList.append(x/myInt)
Aber gibt es einen einfacheren / schnelleren Weg, dies zu tun?
Die Art und Weise, wie Sie es zuerst versucht haben, ist mit numpy direkt möglich :
Wenn Sie solche Operationen mit langen Listen und insbesondere in einem wissenschaftlichen Computerprojekt durchführen, würde ich die Verwendung von numpy wirklich empfehlen.
quelle
numpy.array([10,20,30,40,50,60,70,80,90], dtype='f')
für loat angeben sollten. Andernfalls würde das Teilen durch 3 nur 3 als Ergebnis anstelle von 3,333 ergeben.numpy.array([10.,20,30,40,50,60,70,80,90])
quelle
map()
ein Kartenobjekt zurückgegeben. Wenn Sie also eine Liste möchten, müssen Sie dies explizit angebenlist()
. Also in diesem Fall:newList = list(map(lambda x: x/myInt, myList))
quelle
Die abstrakte Version kann sein:
quelle
quelle