我需要检查特定属性的某个子列表,然后返回满足该属性的bin,但作为原始列表的索引。目前我必须手动执行此操作:
sublist = mylist[start:end]
positive = search(sublist)
positive = start + positive
posiveList.append(positive)
是否有更优雅/惯用的方法来实现这一目标?
答案 0 :(得分:2)
我认为你问的是:
如果我在子列表中搜索并查找索引,是否有一种直接的方法将其转换为原始列表中的索引?
不,唯一的方法就是你已经在做的事情:你需要将start
偏移量添加回索引以获取原始列表中的索引。
这是有道理的,因为子列表和原始列表之间存在无实际关联。以这个例子为例:
>>> x = [1,2,3,4,5]
>>> y = x[1:3]
>>> z = [2,3]
>>> y == z
True
z
与x
的{{1}}关系与y
的关系一样多x
。尽管y
是使用切片语法创建的,但它只是x
中一系列元素的副本 - 它只是一个vanilla列表,并且没有对原始列表x
的实际引用。由于内置于x
的{{1}}和y
之间没有任何关系,因此无法从y
- 索引中获取原始x
- 索引。
答案 1 :(得分:1)
如果我理解正确,您希望保存所有匹配元素的索引。
如果是这样,那么认为你正在寻找这个:
positiveList = [i for i, item in enumerate(mylist[start:end])
if validate_item(item)]
validate_item
基本上应检查此项是否必需,并返回True / False。
答案 2 :(得分:0)
如果您的搜索运算符支持它或者可以修改它以支持它,那么search(wholelist, startfrom, endat)
应该返回实际索引。