2017-03-03 21 views
3

私は組み合わせのリスト(例えば、5桁のピン番号)を持っており、1,2と3を持つものだけを取りたいと思っています。ここで見たが、何らかの理由で何も見つからないようだ。複数の文字がリストに含まれているかどうかを確認するにはどうすればよいですか?

if 1 in combination and 2 in combination and 3 in combination: 

これはうまくいくようですが、私はかなり醜いので、より効率的な方法があると確信しています。 combinationもし

答えて

5

あなたはサブセットチェック実行できるセットです。そうでなければ

if {1, 2, 3} <= combination: 

を、あなたが行うことができます:

if all(x in combination for x in (1, 2, 3)): 
+0

その 'all'コールで' [1、2、3] 'の代わりに'(1,2,3) 'を使う理由はありますか? – Gabriel

+0

本当に。 '(1、2、3)'と '[1,2,3]'はこの文脈では機能的に同等です。数字は読み取り専用であることを示すために '()'を好む人もいます。他の人は '[]'の外観を好みます。 –

0

はあなたのmobination文字列に変換し、setintersactionを確認することができます。

>>> combination = '456' 
>>> needed = '123' 
>>> set(needed) & set(combination) 
set([]) 
>>> combination = '156' 
>>> set(needed) & set(combination) 
set(['1']) 

あなたはintersectionから値のリターンを得る場合は、あなたに必要な値がcombinationです。

関連する問題