【问题标题】:'float' object is not iterable, Iteration over 2 float lists'float' 对象不可迭代,迭代 2 个浮点列表
【发布时间】:2021-11-19 08:25:29
【问题描述】:

当我试图执行这个简单的循环时:

list1 = [1.5,2.6,3.9,4.0]
list2 = [3.2,4.5,5.0,5.0]
for i,j in zip(list1, list2):
 x = sum(i**2 - 2*j)
 print(x)

我希望程序在每个列表中获取每个索引项,遍历整个列表并执行算术运算,然后将整个内容相加并打印总和。例如:

(1.5**2 - 2*3.2) + (3.2^2 - 2*4.5) ...

我收到以下错误:ValueError: 'float' object is not iterable

这是为什么呢?我认为它与循环的格式有关,但我仍然不认为语法对我来说很清楚,不胜感激。

【问题讨论】:

  • 您在问题标题中提到了一个错误,在问题正文中提到了另一个错误。您实际询问的是哪个错误?
  • @Someprogrammerdude 对,修好了
  • 为什么要将 sum 添加到 (i**2 - 2 * j)
  • 这一行出现错误sum(i**2 - 2*j)。究竟在那里尝试什么?例如,sum(0.438764645) 无效。
  • sum(i**2 - 2 * j for i,j in zip(list1, list2))这是你想做的吗?

标签: python syntax


【解决方案1】:

要添加您的列表,您可以这样做:

list1 = [1.5, 2.6, 3.9, 4.0]
list2 = [3.2, 4.5, 5.0, 5.0]

result = sum([a**2 - 2 * b for a, b in zip(list1, list2)])

print(result)  

解释:sum 接受一个可迭代对象,而你给它一个计算的中间结果。如果使用sum,则不需要使用循环

【讨论】:

  • 我试过了,我得到“TypeError: unsupported operand type(s) for ** or pow(): 'generator' and 'float'” - 索引是浮点数有问题吗?
  • 您是否尝试过与此处给出的相同输入?
猜你喜欢
  • 2015-10-23
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2012-08-24
  • 2014-04-26
相关资源
最近更新 更多