以下是我要做的事情:
if len(targets) == 0:
avg = frozenset([tuple(.123/(nodes_num - 1))])
for t in range(nodes_num):
if t == node:
continue
node_p = (avg,t)
node_weig.append(node_p)
我不知道我做错了什么,但它说avg = fro...
浮动对象不可迭代
答案 0 :(得分:1)
这是您的问题:tuple(.123/(nodes_num - 1))
tuple
构造函数采用iterable并从其生成的值中生成tuple
。显然,.123/(nodes_num - 1)
是float
,无法进行迭代。如果要创建此值的一个元素tuple
,请使用:(.123/(nodes_num - 1),)
(注意:创建一个元素tuple
需要尾随逗号,否则parens只是对操作,而不是将其包裹在tuple
)。
因此得到的行将是:
avg = frozenset([(.123/(nodes_num - 1),)])
这将使len
1 frozenset
包含len
1 tuple
,其中包含计算出的float
值。如果目标只是该值的frozenset
,则根本不需要tuple
包装,并且可以简化为:
avg = frozenset([.123/(nodes_num - 1)])
现在,无论是对你的场景做任何有意义的事情我都不知道,但它是你错误的根源。
答案 1 :(得分:0)
来自doc:
返回一个元组,其项目与之相同且顺序相同 iterable的项目。 iterable 可能是一个序列,一个容器 支持迭代,或迭代器对象。如果iterable已经是a 元组,它没有变化。
.123/(nodes_num - 1)
是一个浮点数,这就是你收到错误的原因:
TypeError: 'float' object is not iterable
如果我不误解你的意思,你可以尝试使用
tuple([.123 / (nodes_num - 1)])
使其可迭代。