【发布时间】:2017-03-08 17:33:34
【问题描述】:
我想检查数组列表中是否存在大于0的重复元素。
if [1,0,0,0,1,2] = true
if [0,0,0,0,0,0] = false
我怎样才能得到这个结果?
【问题讨论】:
-
为什么第二种情况是假的?你到底想问什么?
-
@anekix 我想检查超过 0 个值的重复元素。
我想检查数组列表中是否存在大于0的重复元素。
if [1,0,0,0,1,2] = true
if [0,0,0,0,0,0] = false
我怎样才能得到这个结果?
【问题讨论】:
我猜 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
【讨论】:
使用字典来记录元素的数量,如果一个元素出现两次(不为零),那么您的答案是正确的,所以只需跳出循环。
试试这个:
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
注意:有更好的方法,但这个方法很容易理解。
【讨论】: