3

次のような「ft_List」というリストがあります...

[['Fall2001', '22.00', '2000', '01', '01', '120.0', '', 'N'], 
[CgeCam2002', '20.00', '2000', '09', '04', '0.0', '1', ''],
['Fall2004', '18.50', '2001', '18', '01', '', '', 'Y']........

...列 5 を float に変換するにはどうすればよいですか? 私は試した

for i in ft_Rec:
    ms = i[5].split(',')
    float(ms)

しかし得る

TypeError: float() 引数は文字列または数値でなければなりません

. ひもだと思った?一部のフィールドが空 (' ') になっているためでしょうか。この列でいくつかの計算を実行したい

4

4 に答える 4

3

この入力を分割する必要はありません。すでにリストになっています。空の文字列を確認するだけです。

for i in ft_Rec:
    if i[5]: print float(i[5])

合計を取得するには:

total = sum( float(i[5]) for i in ft_Rec if i[5] )
于 2013-05-24T05:07:22.430 に答える
1
>>> ft_List = [['Fall2001', '22.00', '2000', '01', '01', '120.0', '', 'N'],
['CgeCam2002', '20.00', '2000', '09', '04', '0.0', '1', ''],
['Fall2004', '18.50', '2001', '18', '01', '', '', 'Y']]
>>> for i in ft_List:
        i[5] = float(i[5] or 0) # empty string logical ors to 0


>>> ft_List
[['Fall2001', '22.00', '2000', '01', '01', 120.0, '', 'N'], ['CgeCam2002', '20.00', '2000', '09', '04', 0.0, '1', ''], ['Fall2004', '18.50', '2001', '18', '01', 0.0, '', 'Y']]

問題は:

>>> float('')

Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    float('')
ValueError: could not convert string to float: 

このソリューションは、Python の空の組み込みオブジェクトが False として評価されるという事実を使用するだけです。

>>> '' or 0
0
于 2013-05-24T05:10:23.127 に答える
0

あなたはこのようにすることができます:

>>> for row in ll:
...     f = float(row[5]) if row[5] else 0.
...     print f
... 
120.0
0.0
0.0

どこにllある:

>>> ll = [['Fall2001', '22.00', '2000', '01', '01', '120.0', '', 'N'], 
         ['CgeCam2002', '20.00', '2000', '09', '04', '0.0', '1', ''], 
         ['Fall2004', '18.50', '2001', '18', '01', '', '', 'Y']]

0.0空の文字列を印刷しています''

于 2013-05-24T05:02:32.227 に答える
-1

Python は、float の引数として空の文字列を受け入れません。

    >>>float(' ')
    >>>ValueError: could not convert string to float:
于 2013-05-24T05:11:53.640 に答える