我有这个代码
a = [0.0, 1.1, 2.2]
b = a * 2.0
这就是我得到错误的地方
typeError: can't multiply sequence by non-int of type 'float'
我希望它返回
的是
b = [0.0, 2.2, 4.4]
最佳答案
错误是您将一个列表(即 a
)和一个 float (即 2.0
)相乘。
改为这样做(列表理解)
b = [i*2.0 for i in a]
一个小演示
>>> a = [0.0, 1.1, 2.2]
>>> b = [i*2.0 for i in a]
>>> b
[0.0, 2.2, 4.4]
使用 map
map(lambda x:x*2.0 , a)
这是 timeit
结果
bhargav@bhargav:~$ python -m timeit "a = [0.0, 1.1, 2.2]; b = [i*2.0 for i in a]"
1000000 loops, best of 3: 0.34 usec per loop
bhargav@bhargav:~$ python -m timeit "a = [0.0, 1.1, 2.2]; b = map(lambda x:x*2.0 , a)"
1000000 loops, best of 3: 0.686 usec per loop
bhargav@bhargav:~$ python -m timeit "import numpy; a = numpy.array([0.0, 1.1, 2.2]); b = a * 2.0"
10 loops, best of 3: 5.51 usec per loop
列表理解是最快的。
关于Python 类型错误 : can't multiply sequence by non-int of type 'float' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29752360/