我想检查我的列表中是否包含从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