2012-04-11 13 views
0
sum(int(i.replace(',',''))if re.search('\d',i)!=None for i in list) 

リスト内のすべての要素を合計したいと思います。問題は、要素が文字列であり、そのうちのいくつかは数値であり、整数を整数に変換してから追加することです。そのため、文字列に数字があるかどうかを確認する必要があります。 sum関数のリストにどのように条件を追加できますか?また、リストを繰り返し処理して変数に追加したくないsum関数を使用したいと思います。条件(python)のリスト内の要素の合計

+3

例を入出力できますか? –

+0

フィルタリングして要件に合わせて変更できるように作成された関数を使用して、リストの理解度を上げる方法が考えられます。 – TimothyAWiseman

答えて

3

のようなもの。あなたはifが終わりに来ることを除いて、ほぼそこにいる

sum(int(i.replace(',','')) for i in list if re.search(r'\d', i)) 

はこのことを言って、全体的なアプローチは防弾ではありません。数字を他の文字と混在させた入力(例えば、'a1')を詰まらせます。

また、桁区切り文字としてコンマを使用することは普遍的ではありません。 Some localesこれを使用して基点をマークします。それらのロケールでは、あなたのコードはカンマで数字に間違った値を生成します。

1

多分私はsum関数にリストに条件を追加することができますどのようにこの

def safeIntToSum(x): 
    try: return int(x.replace(",","")) 
    except: return 0 

print sum([safeIntToSum(x) for x in list]) 
+0

あなたが最初にそれをリストにしないと、少し速くなると思います。例えば。 'sum(リスト中のxに対するsafeIntoSum(x))' –

関連する問題