【发布时间】:2017-07-28 02:58:55
【问题描述】:
Python 具有检查整个切片有效性的内置功能:slice.indices。单个索引是否有类似的内置功能?
具体来说,我有一个索引,比如a = -2,我希望针对 4 元素列表进行标准化。有没有等价于下面已经内置的方法?
def check_index(index, length):
if index < 0:
index += length
if index < 0 or index >= length:
raise IndexError(...)
我的最终结果是能够用单个非None 元素构造一个元组。我目前正在使用list.__getitem__ 为我做检查,但这似乎有点尴尬/矫枉过正:
items = [None] * 4
items[a] = 'item'
items = tuple(items)
我希望能够做到
a = check_index(a, 4)
items = tuple('item' if i == a else None for i in range(4))
本示例中的所有内容都可以协商。唯一要解决的问题是,我得到a 的方式可以解决任意索引可能存在的所有问题,并且最终结果必须是tuple。
如果解决方案使用 numpy 并且仅真正应用于 numpy 数组而不是 Python 序列,我会非常高兴。对于我心目中的应用来说,任何一个都将是完美的。
【问题讨论】:
-
等等,你想要一个元组还是一个数组?很难说。
-
@user2357112。最终结果是一个元组。它将用于在数组中创建索引,因此我愿意查看仅用于执行索引检查的数组方法。
-
@RajanChauhan。我不确定我是否理解这与远程相关。
-
您不想通过中间列表的任何特殊原因?这对我来说似乎很好,it's faster.