2017-03-03 4 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) 

の問題を持っています。代わりにリストの理解を使用することができます。あなたがしながら、リストを変更することはできません

for item in apuesta_perdedora[:]: 
    if item < x: 
     apuesta_perdedora.remove(item) 
+1

クラシックですが、すべてのエラーがカバーされており、2つの修正案がとても良いものになっています。 –

0

apuesta_perdedora = [num for num in apuesta_perdedora if num > x] 

またはリストのコピーを反復処理:>記号を(代わりに、不要な値を削除するので、私たちは私たちが望むものを残し)に注意してくださいその上にループしています。ループが完了したら、新しいリストを作成し、それを使って古いリストを上書きしてください:

new = [] 
for item in apuesta_perdedora: 
    if float(item) >= x: 
     new.append(item) 
apuesta_perdedora = new # overwrite old list with new list 
関連する問題