Python-检查列表中是否存在所有n个数字 - python

我想检查我的列表中是否包含从0到列表最大数量的所有数字

例如,此列表包含从0到7的所有数字:

l = [0,2,1,7,6,5,4,3] 

但此列表没有,因为它没有4-

l = [0,2,1,6,5,7,3]

我尝试使用zip:

all(x==y+1 for x, y in zip(sorted(l[1:]), sorted(l)))

但这不起作用..

例如 -

l = [0,3,2,5]

没有1和4,因此应该返回false!

在哪里-

l = [0,2,3,1,4,5]

具有从0到5的所有数字,因此应该返回true!

python大神给出的解决方案

无需将zip与多个zip功能一起使用。可以使用sorted:

if sorted(l)==list(range(max(l)+1))

例如:

>>> sorted(l)==list(range(max(l)+1))
False
>>> l= [0,2,1,7,6,5,4,3] 
>>> sorted(l)==list(range(max(l)+1))
True

45码