2017-03-03 147 views
-2

我正在制作一个脚本,它从列表中删除所有小于6.4的数字,但在列表中的数字是字符串('9.4')。我想删除列表中所有数字中的',以便我可以制作if命令。删除Python中的列表

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() 
+1

*“删除'''”*没有意义。你想*将字符串转换为数字*。 – jonrsharpe

回答

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

是一个经典的,但你得到了所有的错误和2修复建议这么好。 –

0

不能修改的列表,而你正在循环它。创建一个新列表,然后用它在循环完成时覆盖旧列表:

new = [] 
for item in apuesta_perdedora: 
    if float(item) >= x: 
     new.append(item) 
apuesta_perdedora = new # overwrite old list with new list