2017-08-30 4 views
0

元の変数をそのまま維持しながら、変数の一部を操作/使用/削除する最もクリーンな方法は何でしょうか?元のままにして変数の一部を操作する

max([1, 2, '3a', '10b']) 

max([1, 2, 3, 10]) 

と値として評価されるべきである:

は、私は最高の数値例えばので

に対応して、以下のリストの値を望んでいたとしましょう'10b'が返されます。

答えて

2
re.search()関数を用い

拡張アプローチ:

import re 

max_item = max([1, 2, '3abc', '10bc'], key=lambda n: int(re.search(r'\d+', str(n)).group(0))) 
print(max_item) 

出力:

10bc 
6

max関数は、key引数を受け取ります。これは、比較に使用される値を計算するために使用されます。例:

max([1, 2, '3a', '10b'], key=lambda x: x if isinstance(x, int) else int(x[:-1])) 

lambdaの独自の変換関数を入力します。

+1

は、最後の文字が文字であると仮定し、また 'float's(または正しい仮定ではないかもしれないかもしれない前提この特定の場合) –

+2

したがって、最後の文章。私はここに与えられた情報の少しだけ行くことができます... – deceze

+0

これは完璧です、それを修正するためにラムダ関数で動作することができます。 – AK47

関連する問題