我正在用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]
也是如此。所有列表都包含浮点数。
答案 0 :(得分:14)
我猜这个问题与行 -
有关spectrum_intensity[first].extend(spectrum_intensity[second][spectrum_mass[second].index(i)])
extend()
函数需要一个可迭代的,但是你试图给它一个浮点数。在一个非常小的例子中相同的行为 -
>>> 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)