为啥我们不能检查索引是不是出现在切片对象中?

Posted

技术标签:

【中文标题】为啥我们不能检查索引是不是出现在切片对象中?【英文标题】:Why can’t we check if an index appears in a slice object?为什么我们不能检查索引是否出现在切片对象中? 【发布时间】:2019-07-20 08:33:44 【问题描述】:

在基本使用中,slice object 表示序列的整数索引的子集。为什么我不能用in 测试索引是否是该子集的成员?它可以是常数时间,类似于 (Python 3) range object 上的相应操作。

【问题讨论】:

【参考方案1】:

因为即使是基本切片也支持负索引,所以检查包含需要知道序列的长度。您可以使用range 提供该长度:

so=slice(b,e,s)
r=range(n)[so]
if i in r: # ...

Python 2 中的xrange 不支持切片(或恒定时间包含检查)。

【讨论】:

以上是关于为啥我们不能检查索引是不是出现在切片对象中?的主要内容,如果未能解决你的问题,请参考以下文章

在二分查找中,为啥不先检查要查找的元素是不是小于或大于数组的最小或最大索引?

为啥在golang中不允许对切片指针进行索引

DataFrame 无法迭代:出现以下错误:元组索引必须是整数或切片,而不是 str

为啥 TypeScript 对象不能用泛型类型索引?

为啥索引超出范围的子字符串切片有效?

为啥python的列表切片不会产生索引越界错误? [复制]