2012-11-22 8 views

答えて

3

に最後の行を変更します。

  • 求める式をNoneに見つからない場合
  • 見つけたとき
  • は、インデックスと評価

唯一の解決策を(Pythonの2.4はそれを処理できるように)私はすべての要件を満たすを思い付くことができこれを三項で使用しません奇妙なこと:例えば

(lambda x: x and x - 1)((str.find(substr) + 1) or None) 

>>> (lambda x: x and x - 1)(('abcd'.find('b') + 1) or None) 
1 
>>> (lambda x: x and x - 1)(('abcd'.find('_') + 1) or None) 
>>> 

私はPython 2.4をインストールしてテストしていないので、動作することを願っています。

+1

lambda really works!tks〜 – ThunderEX

5
None if str.find() < 0 else str.find() 

とコードの重複はあなたを気に(そしてそれが必要)の場合:

index = str.find() 
None if index < 0 else index 

三条件は2.5でaddedました。古いバージョンのPythonをお持ちの場合は、代わりに次のようにしてください:

def my_find(str, sub_str) 
    index = str.find(sub_str) 
    if index < 0: 
     return None 
    else: 
     return index 
+0

Tks.My Python 2.4はそれをサポートできませんでした:( – ThunderEX

+0

@ThunderEX:編集を参照してください – zenpoy

7

このような意味ですか? Pythonの2.4で

def find2(str, substr): 
    result = str.find(substr) 
    return result if result != -1 else None 

、私は総括、あなたが何かしたい場合

if result != -1: 
     return result 
    else: 
     return None 
+0

それはいくつかの名前空間に関数として存在するので、おそらく変数 'sub'を呼び出すのは悪い考えです。 – Serdalis

+0

@Serdalis: –

+0

Tksしかし、私のPython 2.4はそれをサポートできませんでした:(他の方法はありますか?) – ThunderEX

関連する問題