2012-08-27 5 views
1

다음 코드에서;파이썬 세트의 차이가 작동하지 않습니다.

all_digits = set(range(10)) 
print all_digits 
for i in range(102,167): 
    digits = set(k for k in (str(i))) 
    if len(digits) != 3: 
     continue 
    print "digits:", digits 
    remaining_digits = all_digits - digits 
    print "remaining:", remaining_digits 

숫자 세트에는 3 개의 요소가 포함되어 있습니다. 그러나 나는 그 차이점을 원하지만, 항상 remaining_digits은 모든 자릿수를 가지고 있습니다. 여기서 내가 뭘 잘못하고 있니? 다음은 내가 얻는 결과물의 샘플입니다. digits"0" 같은 1 문자열의 집합 인 반면

set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '2']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '3']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '4']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '5']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '6']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '7']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
digits: set(['1', '0', '8']) 
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 

답변

6

all_digits09 통해 열 개 정수의 세트이다. 형식이 다르므로 설정된 차이가 예상대로 작동하지 않습니다.

은 :,

all_digits = set(map(str, range(10))) 
+0

아, 그런 신인 실수를 예컨대을 당신이 원하는 것처럼 작동하게, 중 모든 정수를 사용하거나 모든 문자열을 사용합니다. 시간을 내서 죄송합니다. – yasar

관련 문제