【发布时间】:2020-07-11 12:38:22
【问题描述】:
这是一个代码,它打开一个表格 .csv 并读取每行的行以将数据保存在两个变量中,保存在一个列表中。此外,我想过滤工作表(.csv)的一些数据,因为我不需要它,我正在过滤应用下面的内容,有 x.remove(i) 和 y.remove(i) 但它们正如我在标题中报告的那样,两者都是错误的。我该怎么办?我在做什么错?
g=float(9.8)
x=[]
y=[]
dados = open('dados123.csv').readlines() #trocar para o nome_do_arquivo após testes de diagnóstico
def adiciona_dados():
for i in range (len(dados)):
if i !=0:
linha = dados[i].split(";")
x.append(float(linha[0]))
y.append(float(linha[1])*g)
else:
print('erro1')
len(x)
len(y)
adiciona_dados()
for i in y:
if y[i] < 30:
x.remove(i)
y.remove(i)
else:
print('nada')
len(x)
len(y)
【问题讨论】:
-
工作表中的数据是由代码具有的第一个和唯一的函数添加的:adiciona_dados(),这是有效的,因为当我编码 len(x) 或 len(y) 时有数据保存在列表中。
-
您的两个列表中有不同的数字。试图从两个列表中删除相同的数字只是巧合。 (请注意,在迭代列表时从列表中删除项目将导致项目被跳过 - 而是迭代列表的副本)。
-
在 append() 时更好地过滤它 - 这样你就不必删除它。
-
顺便说一句:你可以用
for line in dados[1:]代替for i in range(len(dados))和if i !=0:和dados[i]
标签: python list for-loop spyder valueerror