0
sum( int(i.replace(',',''))if re.search('\d',i)!=None for i in list)

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

4

2 に答える 2

3

合計関数のリストに条件を追加するにはどうすればよいですか。

if最後に来ることを除いて、あなたはほぼそこにいます:

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

そうは言っても、全体的なアプローチは防弾ではありません。数字を他の文字と混合する入力でチョークします(例'a1')。

また、千単位の区切り文字としてのコンマの使用は一般的ではありません。一部のロケールでは、これを使用して小数点をマークします。これらのロケールでは、コードでコンマを含む数値に対して誤った値が生成されます。

于 2012-04-11T15:29:29.010 に答える
1

多分このようなもの

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

print sum([safeIntToSum(x) for x in list])
于 2012-04-11T15:29:00.553 に答える