我正在尝试从一个 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()
