Skip to main content
 首页 » 编程设计

Python 错误 : 'float' object is not iterable

2025年05月04日20leader

我正在尝试从一个 txt 文件的向量列表中做 3 个切片,有 2 列,使用条件来分隔 RGB。

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

#File opening 
arq = open('arquivo.txt','r') 
 
lines = arq.readlines() 
arq.close() 
 
vetor_x = [] 
vetor_y = [] 
lista_geral = [] 
 
for line in lines: 
    line = line.replace('\n','') 
    line = line.strip() 
    line = line.replace(',','.') 
    line = line.split('\t') 
 
    if(len(line) == 2): 
        X = line[0] 
        Y = line[1] 
        vetor_x.append(float(X)) 
        vetor_y.append(float(Y)) 
        lista_geral.append([X,Y]) 
 
#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_yB) 
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 

请帮帮我!

请您参考如下方法:

该错误意味着此行 vetor_xB[B] = list(vetor_x[i]) 无法将 float 值转换为列表,而是您可能只想将 float 值附加到您的列表中,但我们需要先定义这些列表,然后才能使用它们,如下所示:

# Define the lists we want to append the data to 
vetor_xB = [] 
vetor_yB = [] 
vetor_xG = [] 
vetor_yG = [] 
vetor_xR = [] 
vetor_yR = [] 
 
for i in range(len(vetor_x)): 
    if vetor_x[i] <= 500: 
        vetor_xB.append(vetor_x[i]) 
        vetor_yB.append(vetor_y[i]) 
 
    elif vetor_x[i] <= 600: 
        vetor_xG.append(vetor_x[i]) 
        vetor_yG.append(vetor_y[i]) 
 
    elif vetor_x[i] <= 700: 
        vetor_xR.append(vetor_x[i]) 
        vetor_yR.append(vetor_y[i]) 

那么你的输出应该如你所愿:

####### vetor_xB ####### 
[400.0, 401.10373, 409.54288, 425.24905, 442.71341, 470.96112, 488.7771, 499.79489, 499.91208, 500.0] 
####### vetor_yB ####### 
[46.5713, 42.8136, 103.12, 12.6044, 262.43, 680.958, 171.28, 39.846, 41.1616, 39.2299] 
####### vetor_xG ####### 
[523.70581, 540.81854, 579.26355, 593.3288, 600.0] 
####### vetor_yG ####### 
[38523.1, 31554.2, 243.866, 90.6795, 212.789] 
####### vetor_xR ####### 
[602.58838, 618.64624, 630.01563, 655.33307, 669.74994, 686.74548, 698.11487, 700.0] 
####### vetor_yR ####### 
[251.602, 367.089, 3568.19, 44230.4, 7747.32, 768.864, 1229.72, 1808.8] 

注意: 读取文件的格式化可以简化,全部替换:

for line in lines: 
    line = line.replace('\n','') 
    line = line.strip() 
    line = line.replace(',','.') 
    line = line.split('\t') 

只有这 3 行:

for line in lines: 
    line = line.replace(',','.') 
    line = line.strip().split()