パターンがリストのすべての文字列と一致する場合、Trueを返す関数を定義しようとしています。同様に、matchAll(pattern、list)。Pythonでブール値の集合を集め、すべてを 'AND'と組み合わせた最終テストを返すにはどうすればいいですか?
import re
def matchAll(pattern, list):
list_truth = list
for i in list:
list_truth[i] = re.search(pattern,i) != none
if False in list_truth:
return False
else:
return True
しかし、それは動作しません:
私の最初の試みです。私が間違っていた部分を教えてください。本当にありがとう!私も自分のコードを変更した
print matchAll('a', ['a', 'ab', 'abc']) # True
print matchAll('a', ['a', 'ab', 'bc']) # False
print matchAll('(ab)?', ['a', 'ab', 'abc']) # True
print matchAll('.', ['a', 'ab', 'abc']) # True
print matchAll('.{2,3}', ['a', 'ab', 'abc']) # False
として:
import re
def matchAll(pattern, list1):
list_truth = list
for i in list1:
if re.search(pattern,i) != None:
pass
else:
return False
return True
はまだ、それが正しい結果を返しますが、私は考えていないよう
例えば、サンプル入力/出力が見えますそれは関数を構築する良い方法です。どのように私はそれを最適化することができますか?ありがとう!あなたはこのためall
(Pythonの組み込み)
def match_all(pattern, items)
return all(re.search(pattern, item) for item in items)
を使用することができます
はあなたのコードですか?また、サンプルの入力を表示することができます – idjaw
私はあなたが言語のコンストラクタをシャドウしているので、あなたがパラメータ名として "リスト"を使用する場合、問題があると思う。 "list"を予約語ではない別の名前に置き換えてください。 –
for i in listはリストの値(つまり文字列)を繰り返し処理し、それをインデックスとして使用するため、問題になります。 – bereal