制作子列表索引是指原始列表

时间:2013-07-04 17:35:06

标签: python

我需要检查特定属性的某个子列表,然后返回满足该属性的bin,但作为原始列表的索引。目前我必须手动执行此操作:

sublist = mylist[start:end]

positive = search(sublist)
positive = start + positive 
posiveList.append(positive)

是否有更优雅/惯用的方法来实现这一目标?

3 个答案:

答案 0 :(得分:2)

我认为你问的是:

  

如果我在子列表中搜索并查找索引,是否有一种直接的方法将其转换为原始列表中的索引?

不,唯一的方法就是你已经在做的事情:你需要将start偏移量添加回索引以获取原始列表中的索引。

这是有道理的,因为子列表和原始列表之间存在无实际关联。以这个例子为例:

>>> x = [1,2,3,4,5]
>>> y = x[1:3]
>>> z = [2,3]
>>> y == z
True

zx的{​​{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)应该返回实际索引。