2017-03-03 1 views
3

나는 조합 목록을 가지고 있으며 (예 : 5 자리 핀 번호), 1,2와 3이있는 것만 가져 가고 싶습니다. 여기에서 보았다. 그러나 didnt는 무엇인가의 이유를 위해 무엇인가 발견하는 것처럼 보인다.여러 문자가 목록에 있는지 확인하는 방법은 무엇입니까?

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을 확인하실 수 있습니다 . 당신이 intersection에서 값 반환을받을 경우

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

다음 필요한 값은 combination입니다.

관련 문제