2013-07-04 61 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)應該返回實際的索引。