测试整数是否为切片的索引值

ala*_*tti 3 python slice

是否有布尔函数来测试整数是否是slice对象中包含的索引值?如果没有拆包start,stop,step参数?

3 in slice(1,6,2)
Run Code Online (Sandbox Code Playgroud)

切片不可迭代时会引发错误.

谓词应适用于任意的None start,stop,step的参数.逻辑很简单,但希望有一个内置或包.

Mad*_*ist 5

逻辑并不像你想象的那么简单,因为为None止步或启动(取决于符号step)这样做是没有意义的,因为你需要指定一个长度.

基本上,您要求的是range对象中的包含,它包含与切片相同的信息,但它是一个有效的序列,并支持快速包含检查.slice有一个indices方法来帮助转换,如果你提供你有兴趣切片的序列的长度:

def in_slice(n, s, length):
    return n in range(*s.indices(length))
Run Code Online (Sandbox Code Playgroud)