你能解释一下为什么它不好用吗
print([sum(a)**2 for a in range(100)] - [sum(a*a) for a in range(100)])
我试图在一行中解决
Traceback (most recent call last):
File "C:/Users/1/PycharmProjects/Python_DevOps/hw/hw9.py", line 15
print([sum(a)**2 for a in range(1,100)] - [sum(a*a) for a in range(1,100)])
File "C:/Users/1/PycharmProjects/Python_DevOps/hw/hw9.py", line 15, in <listcomp>
print([sum(a)**2 for a in range(1,100)] - [sum(a*a) for a in range(1,100)])
TypeError: 'int' object is not iterable
您的问题是,在python中
sum
接收的是一个可写的(在本例中是一个列表)而不是一个整数,因此您只需将理解添加到sum的括号中即可像这样:
输出:
根据docs:
因此,当您执行
sum(a)
时,a
是一个整数,它是由range()
函数生成的。由于整数不可iterable,因此会引发类型错误而且,
a**2
等于a*a
,所以输出为零。根据问题的答案是:当您编写
sum(a)
和sum(a*a)
时,没有一个会对多个值求和,您需要对列表中生成的所有值求和那么
a**2 == a*a
那么您的实际值将为0,第一个参数是和的平方,您可以直接将range
传递给sum
,因为它需要一个可数相关问题 更多 >
编程相关推荐