Python: TypeError: 'float' object is not iterable

Python: TypeError: 'float' object is not iterable

我尝试在 python 中使用遍历元组列表时访问的任何两行对的值进行计算,但我收到如下类型错误。有谁知道如何解决这个问题?谢谢!

代码如下:

for ws1 in ccy_results:
            for ws2 in ccy_results:
                variance = ws1.WS * ws2.WS
                K += variance

错误信息:

    K += variance
TypeError: 'float' object is not iterable

ccy_results 的摘录如下所示:

[ws(Qualifier='AUD', Curve='Libor3m', Tenor='1m', WS=214000000.0), 
ws(Qualifier='AUD', Curve='Libor3m', Tenor='2y', WS=-106000000.0), 
ws(Qualifier='AUD', Curve='Libor3m', Tenor='6m', WS=213000000.0),
ws(Qualifier='CHF', Curve='Libor6m', Tenor='15y', WS=-200000000.0), 
ws(Qualifier='CHF', Curve='Libor6m', Tenor='20y', WS=540000000.0),
ws(Qualifier='CHF', Curve='Libor6m', Tenor='30y', WS=756000000.0)]

我尝试使用以下代码通过打印 ws1.WS 来进行检查,但 ccy_results 中的所有 WS 都出现了。我想就是这个原因。我该如何解决这个问题?

for ws1 in ccy_results:
            for ws2 in ccy_results:
                print(ws1.WS)

import collections
ws = collections.namedtuple('ws',('Qualifier', 'Curve', 'Tenor', 'WS'))
ccy_results = [ws(Qualifier='AUD', Curve='Libor3m', Tenor='1m', WS=214000000.0), 
ws(Qualifier='AUD', Curve='Libor3m', Tenor='2y', WS=-106000000.0), 
ws(Qualifier='AUD', Curve='Libor3m', Tenor='6m', WS=213000000.0),
ws(Qualifier='CHF', Curve='Libor6m', Tenor='15y', WS=-200000000.0), 
ws(Qualifier='CHF', Curve='Libor6m', Tenor='20y', WS=540000000.0),
ws(Qualifier='CHF', Curve='Libor6m', Tenor='30y', WS=756000000.0)]
K = []
for ws1 in ccy_results:
    for ws2 in ccy_results:
        variance = ws1.WS * ws2.WS
        K += variance

列表的扩充赋值操作+=等价于list.extend,它的参数需要一个可迭代对象(左边的-表达式的一侧)。

改变

K += variance

K.append(variance)

来自Mutable Sequence Types

Operation Result
s.extend(t) or s += t extends s with the contents of t (for the most part the same as s[len(s):len(s)] = t)