0

私は2項目のリストを持っています。

サンプル入力:

['19(1,B7)', '20(1,B8)']
['16 Hyp', '16 Hyp']
['< 3.2', '38.3302615548213']
['18.6086945477694', '121.561539536844']

float または int のものを探して削除する必要があります。したがって、上記のリストを次のようにする必要があります。

['19(1,B7)', '20(1,B8)']
['16 Hyp', '16 Hyp']
['3.2', '38.3302615548213']
['18.6086945477694', '121.561539536844']

「>」を見つけて最初のアイテムを分割するコードを書きましたが、「新しいアイテム」を古いものに置き換える方法がわかりません。

これが私の現在のコードです:

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

for i in range(0,len(result_rows)):
    out_row = []
    for j in range(0,len(result_rows[i])-1):
        values = result_rows[i][j].split('+')
            for items in values:
                if '> ' in items:
                newItem=items.split()
                for numberOnly in newItem:
                   if is_number(numberOnly):
                      values.append(numberOnly)

この (print(values)) の出力は

['< 3.2', '38.3302615548213', '3.2']
4

5 に答える 5

2

これは、あなたが望むことを行う真のリスト理解の方法のように見えます...

def isfloat(string):
    try:
        float(string)
        return True
    except:
        return False

[float(item) for s in mylist for item in s.split() if isfloat(item)]
#[10000.0, 5398.38770002321]

または、 を削除しfloat()て項目を文字列として取得します。このリスト内包表記は、文字列に「>」または「<」が含まれている場合にのみ使用できます。

于 2013-05-15T19:52:45.537 に答える