我正在制作一个脚本,删除列表中小于6.4的所有数字,但在我的列表编号中是字符串('9.4'
)。我想删除列表中所有数字中的'
,以便我可以发出if
命令。
import csv
import operator
import re
x = 6.4
ss = open("APUESTAS.csv")
csv_f = csv.reader(ss,delimiter=";")
apuesta_perdedora = []
for row in csv_f:
pne = row[1]
apuesta_perdedora.append(row[2])
for item in apuesta_perdedora:
if int(item) < x:
apuesta_perdedora.remove(item)
print(list_2)
ss.close()
答案 0 :(得分:4)
由于您正在从文件中读取数据,因此需要先将数字从字符串转换为浮点数,然后再将它们附加到列表中。
将apuesta_perdedora.append(row[2])
更改为apuesta_perdedora.append(float(row[2]))
。
您也遇到了
的问题for item in apuesta_perdedora:
if int(item) < x:
apuesta_perdedora.remove(item)
在迭代同一列表时从列表中删除项目通常是个坏主意。您可以使用列表理解。请注意>
符号(而不是删除我们保留的不需要的值):
apuesta_perdedora = [num for num in apuesta_perdedora if num > x]
或迭代列表的副本:
for item in apuesta_perdedora[:]:
if item < x:
apuesta_perdedora.remove(item)
答案 1 :(得分:0)
在循环播放列表时,无法修改列表。创建一个新列表,然后在循环完成时使用它覆盖旧列表:
new = []
for item in apuesta_perdedora:
if float(item) >= x:
new.append(item)
apuesta_perdedora = new # overwrite old list with new list