52

同じコードのチャンクを繰り返し書いていることに気づきました。

def stringInList(str, list):
    retVal = False
    for item in list:
        if str in item:
            retVal = True
    return retVal

この関数をより速く/より少ないコードで書く方法はありますか? 私は通常、次のように if ステートメントでこれを使用します。

if stringInList(str, list):
    print 'string was found!'
4

1 に答える 1

76

はい、使用しますany():

if any(s in item for item in L):
    print 'string was found!'

ドキュメントに記載されているように、これは関数とほぼ同じですがany()、文字列とリストの代わりにジェネレーター式を使用してany()短絡することができます。がTrue になると、関数が壊れます ( に変更するs in itemだけで、関数でこれを行うことができます。値を返すと関数が壊れることに注意してください)。retVal = Truereturn True


str文字列やリストに名前を付けることは避けてくださいlist。これにより、組み込みの型がオーバーライドされます。

于 2013-11-01T12:51:15.970 に答える