Python 类型错误 : can't multiply sequence by non-int of type 'float'

标签 python list

我有这个代码

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/

相关文章:

Python 连接到 MySQL 失败,错误为 "dh key too small"

python - sklearn.linear_model.LogisticRegression 中回归的工作原理

Python Scapy 递归 DNS 查询

Java:如何将 List<?> 转换为 Map<String,?>

python - 高效查找列表中的重复项

python - 删除除我在 python 列表中的 id 之外的所有记录

Python,数据帧: Duplicating rows according to the number of items in a list and ranking the resulted rows

java - 程序只循环一次但应该循环T次

python - str.startswith 是如何工作的?

python - 获取所有 Slack 用户上次事件时间戳的方法