Python2 float对象不可编辑

Python2 float对象不可编辑,python,python-2.7,Python,Python 2.7,以下是我试图做的: 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。。。float对象不可编辑这是您

以下是我试图做的:

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。。。float对象不可编辑

这是您的问题:tuple.123/nodes\u num-1

元组构造函数接受一个iterable,并根据它生成的值生成一个元组。显然,.123/nodes_num-1是一个浮点值,不能迭代。如果要创建此值的单元素元组,请使用:.123/nodes\u num-1,注意:创建单元素元组时必须使用尾随逗号,否则参数只是对操作进行分组,而不是将其包装在元组中

因此得出的结果是:

avg = frozenset([(.123/(nodes_num - 1),)])
这将生成一个len 1 frozenset,其中包含一个len 1元组和计算出的浮点值。如果目标只是该值的冻结集,则根本不需要元组包装,可以简化为:

avg = frozenset([.123/(nodes_num - 1)])
现在,我不知道这两者是否对您的场景有意义,但这是您的错误来源。

来自文档:

返回一个元组,其项与 iterable的项目。iterable可以是一个序列,一个容器 支持迭代或迭代器对象。如果iterable已经是一个 元组,则返回时保持不变

.123/nodes_num-1是一个浮点值,这就是为什么会出现错误:

TypeError: 'float' object is not iterable
如果我没有误解你的意思,你可以试着用

元组[.123/nodes_num-1]使其可编辑