2017-10-05 1 views
1

이 특정 주제에 대해 이미 많은 질문이 있지만 내 문제에 대한 적절한 해결책을 찾을 수 없다는 것을 알고 있습니다. 내 코드에서 '더블'번호가 있는지 확인하려면목록에있는 요소의 출현 횟수

2, 20, 15, 16, 17, 3, 8, 10, 7 

:

내가 입력을 가지고있다. 이 코드로 작업 해 보았습니다. 주어진 목록에 더블 번호가 없기 때문에

lijst = input('Give a list: ') 
teller = 0 
for i in lijst.split(','): 
    if lijst.count(i) != 1: 
     teller += 1 
print(teller != 0) 

일반적으로 나는 거짓 받아야합니다. 그러나, 나는 사실을 받는다. 나는이 사람이이 문제를 방지하는 방법을 알고 있나요 (20)

True 

도 나타나기 때문에 그건 제안, 그래서는 '2'두 번 계산되지 않는 이유는 무엇입니까?

답변

2

당신은 그

>>> data = [2, 20, 15, 16, 17, 3, 8, 10, 7] 
>>> from collections import Counter 
>>> Counter(data) 
Counter({2: 1, 3: 1, 7: 1, 8: 1, 10: 1, 15: 1, 16: 1, 17: 1, 20: 1}) 
>>> 

그것은 발행 수의 수를 계산하고 키가있는 딕셔너리는 항목을 나타냅니다 반환하고 값이 발행 수의 수를 정확히 않는 collections.Counter를 사용할 수 있습니다.

그냥 에 관계없이, 중복 여부가 있는지 알고 싶다면

하는 항목의 중복, 당신은 단순히 목록을 통해 Set을 사용할 수 있으며 이후 len()를 확인할 수 있습니다 :

len(data) == len(set(data))

1

당신을 입력의 고유 한 요소 집합의 길이와 입력 길이를 비교할 수 있습니다.

def has_repeated_elements(input): 
    """returns True if input has repeated elements, 
    False otherwise""" 
    return len(set(input)) != len(input) 

print(not has_repeated_elements(input)) 
관련 문제