2017-03-03 178 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