Python:检查列表是否按顺序排列|定义了列表的末尾

Python:检查列表是否按顺序排列|定义了列表的末尾,python,list,hex,sequence,enumerate,Python,List,Hex,Sequence,Enumerate,我的函数是这样的, 检查mylist的所有值是否都是连续的,即十六进制列表。例如: mylist1 = ['03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c','0d', '0e', '0f'] mylist2 = ['03', '05', '06', '07', '08', '09', '0a', '0b', '0c','0d', '0e', '0f'] def checkmylist(mylist): it = (in

我的函数是这样的, 检查mylist的所有值是否都是连续的,即十六进制列表。例如:

mylist1 = ['03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c','0d', '0e', '0f']
mylist2 = ['03', '05', '06', '07', '08', '09', '0a', '0b', '0c','0d', '0e', '0f']

def checkmylist(mylist):
    it = (int(x, 16) for x in mylist)
    first = next(it)
    return all(a == b for a, b in enumerate(it, first + 1))


checkmylist(mylist1)
#expected to returns pass
checkmylist(mylist2)
#expected to returns fail
但是我的函数还需要一个逻辑,它应该检查列表,即使列表的最后一个值已知,例如

00 to 10 | 00 to 0a(Hex)
这里已经知道,10是最后一个值,此时我的函数应该重新初始化计数器,这是最有效的方法。对于有限的值集,我的函数应该返回true

mylist = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a','00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a']

checkmylist(mylist)
#Expected True 

您可以使用
==
操作符检查排序列表是否与原始列表相同

# list is not in order
mylist = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a','00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a']

# list is in order
mylist2 = ['03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c','0d', '0e', '0f']

sorted(mylist) == mylist # returns False
sorted(mylist2) == mylist2 # returns True

您可以使用模数运算符处理从零重新启动:

mylist = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a',
          '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a']

def checkmylist(mylist, end=10):
    end += 1
    it = (int(x, 16) for x in mylist)
    first = next(it)
    return all(a % end == b for a, b in enumerate(it, first + 1))

checkmylist(mylist) # returns True

对于10以外的已知结束值,您需要使用函数的第二个参数(例如,
checkmylist(mylist,end=14)

在这种情况下,值是否总是从零开始/重新开始?或者类似于
['08'、'09'、'0a'、'08'、'09'、'0a']
的东西也应该返回
True
?列表可以从任何值开始,但重新启动将从零开始。我的问题是检查我的列表是否是连续的,其中我的列表是非常有限的列表,我的清单又从头开始了。@zachgates这个答案与被问的问题无关。我不明白为什么@zachgates的答案是错误的。似乎您正在尝试查看列表是否已排序。是这样吗?