2013-07-04 25 views
0

我需要检查某个特定属性的子列表,然后返回满足该属性的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有丝毫不亚于yx关系的有x。尽管y是使用切片语法创建的,但它仅仅是x中一系列元素的副本 - 它仅仅是一个香草列表,并没有实际引用原始列表x。由于y内建的xy之间没有任何关系,因此无法从y指数返回原始x-索引。

1

如果我正确理解了你,你想保存所有匹配元素的索引。

如果是这样,那么想你正在寻找这样的:

positiveList = [i for i, item in enumerate(mylist[start:end]) 
       if validate_item(item)] 

validate_item应主要检查该项目是否需要与否,返回真/假。

0

如果您的搜索运营商支持它或可以修改以支持它,那么search(wholelist, startfrom, endat)应该返回实际的索引。