2017-10-05 19 views
1

この特定のトピックについて既に多くの質問があることは知っていますが、私の問題に対する適切な解決策を見つけることができません。私は私のコードで「double」の番号があるかどうかを確認したいリスト内の要素の出現回数

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) 

通常、指定されたリストにはダブル数字がないので、私はFalseにする必要があります。しかし、私は真実を受け取る。私は2は、誰もがこの問題を回避する方法を知っているので、「2」回カウントされない20

True 

にも表示されますので、それはです示唆しますか?

答えて

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)) 
関連する問題