Pythonトリック操作:サブストリングが含まれているかどうかを判断する7つの方法

Python言語には多くの(そしてますます多くの)高度な機能があり、Python愛好家の間で非常に人気があります。これらの人々の目には、通常の開発者が理解できない高度な機能を書くことができるのは、マスターと神です。

しかし、チームワークでは、スキルを披露することはタブーであることを知っておく必要があります。

なんでそんなこと言うの?私の意見について話させてください:

  1. コードが単純でロジックが明確であるほど、エラーが発生しにくくなります。
  2. チームワークでは、コードはあなただけで維持されるのではなく、コードのロジックを読んだり理解したりするコストを削減することは良い道徳です。
  3. 単純なコードは最も基本的な構文シュガーのみを使用し、複雑な高度な機能にはより多くの依存関係があります(言語バージョンなど)

この記事は「ヒョンテクノロジーシリーズ」の第3弾です。このシリーズでは、私が見た驚くべき操作を要約して数えます。ここで、Python愛好家であれば、いくつかのクールなコーディングスキルを学ぶことができます。同時に、これらのコンテンツを読むと、他の人のコードを読むときに役立つ場合があります。

1.で使用し、ではなく使用する

inまたnot in、Pythonは非常に人気のあるキーワードであるため、それらをに分類します成员运算符

これらの2つのメンバー演算子を使用すると、オブジェクトが別のオブジェクトにあるかどうかを直感的かつ明確に判断できます。例は次のとおりです。

>>> "llo" in "hello, python"
True
>>>
>>> "lol" in "hello, python"
False

2.findメソッドを使用します

文字列オブジェクトのfindメソッドを使用して、サブ文字列が見つかった場合は、文字列内の指定されたサブ文字列の位置を返すことができます。見つからなかった場合は、 -1

>>> "hello, python".find("llo") != -1
True
>>> "hello, python".find("lol") != -1
False
>>

3.インデックス方式を使用します

文字列オブジェクトには、文字列内で指定されたサブ文字列が最初に出現するインデックスを返すことができるindexメソッドがあります。見つからない場合は例外がスローされるため、使用するときはキャプチャに注意する必要があります。

def is_in(full_str, sub_str):
    try:
        full_str.index(sub_str)
        return True
    except ValueError:
        return False

print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

4.カウント方法を使用します

インデックスカーブで国を救うというアイデアを使用して、カウント方法を使用して判断することもできます。

判定結果が0より大きい限り、サブストリングがストリング内に存在することを意味します。

def is_in(full_str, sub_str):
    return full_str.count(sub_str) > 0

print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

5.魔法の方法を通して

サブストリングではなく、別の文字に存在するかどうかを判断するために使用する最初のメソッドでは、実際にで使用し、で使用しない場合、Pythonインタープリターはオブジェクトに__contains__魔法のメソッドがあるかどうかを確認します

存在する場合は実行します。存在しない場合、Pythonはシーケンス全体を自動的に繰り返し、必要なアイテムが見つかる限りTrueを返します。

例は次のとおりです。

>>> "hello, python".__contains__("llo")
True
>>>
>>> "hello, python".__contains__("lol")
False
>>>

この使用法は、inおよびnot inを使用することと同じですが、コードを理解するのが難しくなるように誰かがこのように書くことを排除するものではありません。

6.オペレーターの助けを借りて

オペレーターモジュールは、pythonの組み込みオペレーター関数インターフェースであり、算術および比較の組み込み操作用のいくつかの関数を定義します。オペレータモジュールはcに実装されているため、実行速度はpythonコードよりも高速です。

オペレーターにcontainsは、ストリング内のサブストリングかどうかを簡単に判別できるメソッドがあります。

>>> import operator
>>>
>>> operator.contains("hello, python", "llo")
True
>>> operator.contains("hello, python", "lol")
False
>>> 

7.通常のマッチングを使用する

検索機能と言えば、通常のルールは間違いなくプロのツールであり、検索ルールがどれほど複雑であるかを満足させることができます。

文字列が別の文字列に存在するかどうかを判断する必要がある場合、規則性を使用するのは単純にやり過ぎです。

import re

def is_in(full_str, sub_str):
    if re.findall(sub_str, full_str):
        return True
    else:
        return False

print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

おすすめ

転載: blog.csdn.net/weixin_36338224/article/details/109187689