如何检查列表中的重复值而忽略特定值?

时间:2018-04-25 16:21:39

标签: python list duplicates

我试图确定列表是否有重复值。我的列表只包含数字,我只关心找到非零重复项。因此,如果我的列表为[0,4,0],我不希望我的程序认为它有重复项(因为我忽略了0 s),但如果我的列表是{{1我的程序应该告诉我它有重复。

我尝试使用此代码:

[3,0,3]

代码有效但它会考虑我不想要的Mylist = [0,4,0] if len(Mylist) == len(set(Mylist)): print('The list does not have duplicates') else: print('The list has duplicates') 。 我知道我可以创建一个循环,其中包含几行代码来检查每个值,但我想知道是否有一种简单易行的方法。

2 个答案:

答案 0 :(得分:1)

您只需从列表中删除0即可。 请注意,代码中的第二行使用list comprehension。 另外list是Python内置函数的名称,因此最好为列表使用不同的名称。

my_list = [0,4,0]
my_list_no_zero = [value for value in my_list if value != 0] # this uses list comprehension
if len(my_list_no_zero ) == len(set(my_list_no_zero )):
    print('The list does not have duplicates')
else:
    print('The list has duplicates')

答案 1 :(得分:0)

您可以避免使用过滤后的值创建新列表,并使用以下内容建立增量和快捷设置:

any(map(lambda L, I={0}, S=set(): (L not in I and L in S) or S.add(L), your_list))

只要多次看到一个不应忽略的元素(True部分)或I={0},否则会立即返回False(例如:所有非被忽略的元素是独一无二的。)