PythonTypeError:“ float”对象不可迭代

时间:2019-01-02 06:14:29

标签: python python-3.x

我正在尝试使用条件分隔RGB从txt文件的矢量列表中提取3个切片,分为2列。

但是,当我运行程序时,出现以下错误:“'float'对象不可迭代”。谁能帮我吗?

#Conditions
B = 0
G = 0
R = 0

for i in range(0,len(vetor_x)):

    if vetor_x[i] <= 500:
        vetor_xB[B] = list(vetor_x[i])
        vetor_yB[B] = list(vetor_y[i])
        B += 1

    elif vetor_x[i] <= 600:
        vetor_xG[G] = list(vetor_x[i])
        vetor_yG[G] = list(vetor_y[i])
        G += 1

    elif vetor_x[i] <= 700:
        vetor_xR[R] = list(vetor_x[i])
        vetor_yR[R] = list(vetor_y[i])
        R += 1

print('####### vetor_xB #######')
print(vetor_xB)
print('####### vetor_yB #######')
print(vetor_xB)
print('####### vetor_xG #######')
print(vetor_xG)
print('####### vetor_yG #######')
print(vetor_yG)
print('####### vetor_xR #######')
print(vetor_xR)
print('####### vetor_yR #######')
print(vetor_yR)

当我尝试运行它时,会导致此错误:

Traceback (most recent call last):
  File "teste4.py", line 30, in <module>
    vetor_xB[B] = list(vetor_x[i])
TypeError: 'float' object is not iterable    

请帮助我!

1 个答案:

答案 0 :(得分:0)

您不能将intfloat类型拆分为list
如果您要这样做,可以先使用str将它们转换为str(vetor_x[i])
list()将尝试将字符串分割成每个字符。
例如,list('abc')会给您['a','b','c']
对于intfloat,因为它们不是可迭代的,所以无法完成。

您似乎不打算将vetor_x[i]分成每个字符。看起来您只想将值存储到vetor_xB[B]中,在这种情况下,您应该创建一个包含这么多None0变量的空列表,然后用代码替换它们与您的

for i in range(0,len(vetor_x)):

    if vetor_x[i] <= 500:
        vetor_xB[B] = vetor_x[i]
        vetor_yB[B] = vetor_y[i]
        B += 1
.......

会起作用。
因此,您实际上应该创建vetor_xB = [None]*500以获得vetor_xB = [None, None, x500...],然后上述代码才能生效