課題は、整数の 2 つのかなり小さなリスト (ほとんどの場合、それぞれ 10 要素未満) を比較する関数を作成することです。1 つのリストは次のようになります。
self = [0, 0, 1, 2]
比較対象のリストは、次の例のいずれかのようになります。
other1 = []
other2 = [0, 0, 1]
other3 = [0, 0, 1, 2, 0]
other4 = [0, 1, 1, 2]
other5 = something
ご覧のとおり、要素の重複は非常に一般的であり、要素の順序が重要です。
期待される結果は、最初から数えて、self と other が同じである期間を表す整数でなければなりません。したがって、その他に応じて、結果は次のようになります。
result1 = 0
result2 = 3
result3 = 4
result4 = 1
result5 = 0
このコードは、ユーザーとの対話ごとに約 100 回使用されるため、最も効率的である必要があります。
私は次のようにコーディングしました。希望どおりに動作しますが、少し遅いようです:
def match(self, other):
if self == other:
return len(self)
element = -1
for element in range(min(len(self), len(other))):
if self[element] != other[element]:
element -= 1
break
return element +1
最初の if ステートメントは、既に高速化のための拡張機能ですが、解決策は依然として遅く、element という名前の変数と 2 つの return ステートメントに対するすべての修正により、少しぎこちなく見えます。
「一致」または「比較」よりも優れたそのような関数の名前はありますか?