我正在尝试使用条件分隔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
请帮助我!
答案 0 :(得分:0)
您不能将int
或float
类型拆分为list
。
如果您要这样做,可以先使用str
将它们转换为str(vetor_x[i])
。
list()
将尝试将字符串分割成每个字符。
例如,list('abc')
会给您['a','b','c']
。
对于int
和float
,因为它们不是可迭代的,所以无法完成。
您似乎不打算将vetor_x[i]
分成每个字符。看起来您只想将值存储到vetor_xB[B]
中,在这种情况下,您应该创建一个包含这么多None
或0
变量的空列表,然后用代码替换它们与您的
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...]
,然后上述代码才能生效