我想检查数组列表中是否存在大于0的重复元素。
if [1,0,0,0,1,2] = true
if [0,0,0,0,0,0] = false
我怎样才能得到这个结果?
答案 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
注意:有更好的方法,但这个方法很容易理解。