【问题标题】:TypeError: 'float' object is not iterable, Python listTypeError:'float' 对象不可迭代,Python 列表
【发布时间】:2015-10-23 08:10:52
【问题描述】:

我正在用 Python 编写一个程序,并尝试像这样扩展一个列表:

spectrum_mass[second] = [1.0, 2.0, 3.0]
spectrum_intensity[second] = [4.0, 5.0, 6.0]
spectrum_mass[first] = [1.0, 34.0, 35.0]
spectrum_intensity[second] = [7.0, 8.0, 9.0]

for i in spectrum_mass[second]:
    if i not in spectrum_mass[first]:
        spectrum_intensity[first].extend(spectrum_intensity[second][spectrum_mass[second].index(i)])
        spectrum_mass[first].extend(i)

但是,当我尝试这样做时,我在第 3 行收到 TypeError: 'float' object is not iterable

需要明确的是,spectrum_mass[second] 是一个列表(即在字典中,第二和第一是键),spectrum_intensity[first]spectrum_intensity[second]spectrum_mass[second] 也是如此。所有列表都包含浮点数。

【问题讨论】:

    标签: python list python-2.7 loops typeerror


    【解决方案1】:

    我猜问题出在这条线上 -

    spectrum_intensity[first].extend(spectrum_intensity[second][spectrum_mass[second].index(i)])
    

    extend() 函数需要一个 iterable ,但您正试图给它一个浮点数。在一个非常小的示例中具有相同的行为 -

    >>> l = [1,2]
    >>> l.extend(1.2)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'float' object is not iterable
    

    你想改用.append() -

    spectrum_intensity[first].append(spectrum_intensity[second][spectrum_mass[second].index(i)]) 
    

    下一行也有同样的问题,请使用append() 而不是extend() -

    spectrum_mass[first].extend(i)
    

    【讨论】:

    • 好问题,好答案,我也找不到任何直接的重复项:)。干得好。
    • 这似乎是一个明智的链接到this SO question 关于appendextend 之间的区别的地方。
    • 我还从this SO discussion 那里学到了类似主题的东西。
    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2020-07-23
    • 2021-12-13
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多