gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:45 24 4
gpt4 key购买 nike

我的功能是这样的,thanks to this answer,这是检查 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

最佳答案

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

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))

关于Python:检查列表是否按顺序|列表末尾已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29001222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com