检查Python中的列表中是否存在重复值(> 0)

时间:2017-03-08 17:33:35

标签: python list

我想检查数组列表中是否存在大于0的重复元素。

if [1,0,0,0,1,2] = true

if [0,0,0,0,0,0] = false 

我怎样才能得到这个结果?

2 个答案:

答案 0 :(得分:0)

我想OP只想处理自然数。试试这个:

def is_duplicated_natural_numbers(input):
    # make it >0
    natural_numbers_list = list(filter(lambda x: x > 0, input))

    # remove duplicates
    set_list = list(set(natural_numbers_list))

    # if natural_numbers_list == set_list, no natural numbers duplicates
    return natural_numbers_list != set_list

print(is_duplicated_natural_numbers([1,0,0,0,1,2]))  # True
print(is_duplicated_natural_numbers([0,0,0,0,0,0]))  # False
print(is_duplicated_natural_numbers([1,2,3,4,5,1]))  # True

答案 1 :(得分:-1)

使用字典来保持元素的数量,如果元素出现两次(不是零)那么你的答案是真的,所以只需从循环中断。

试试这个:

l = [0,0,0,0]
dic = {}
flag = False
for i in l:
    if i in dic:
        dic[i]+=1
        if dic[i]>1 and i!=0:
            flag = True
            break
    else:
        dic[i] = 1
print flag

注意:有更好的方法,但这个方法很容易理解。