我需要檢查某個特定屬性的子列表,然後返回滿足該屬性的bin,但是作爲原始列表的索引。目前我不得不手動完成這項工作:使子列表索引參考原始列表
sublist = mylist[start:end]
positive = search(sublist)
positive = start + positive
posiveList.append(positive)
有沒有更優雅/習慣的方法來實現這個目標?
我需要檢查某個特定屬性的子列表,然後返回滿足該屬性的bin,但是作爲原始列表的索引。目前我不得不手動完成這項工作:使子列表索引參考原始列表
sublist = mylist[start:end]
positive = search(sublist)
positive = start + positive
posiveList.append(positive)
有沒有更優雅/習慣的方法來實現這個目標?
我想你問的是:
如果我搜索和子列表找到一個指標,有沒有將其轉化爲它的索引在原始列表中一個簡單的方法?
不,唯一的方法就是您已經在做的事情:您需要將start
偏移量添加回索引以獲取原始列表中的索引。
這是有道理的,因爲有子列表和原始列表之間沒有實際關聯。就拿這個例子比如:
>>> x = [1,2,3,4,5]
>>> y = x[1:3]
>>> z = [2,3]
>>> y == z
True
z
有絲毫不亞於y
到x
關係的有x
。儘管y
是使用切片語法創建的,但它僅僅是x
中一系列元素的副本 - 它僅僅是一個香草列表,並沒有實際引用原始列表x
。由於y
內建的x
和y
之間沒有任何關係,因此無法從y
指數返回原始x
-索引。
如果我正確理解了你,你想保存所有匹配元素的索引。
如果是這樣,那麼想你正在尋找這樣的:
positiveList = [i for i, item in enumerate(mylist[start:end])
if validate_item(item)]
凡validate_item
應主要檢查該項目是否需要與否,返回真/假。
如果您的搜索運營商支持它或可以修改以支持它,那麼search(wholelist, startfrom, endat)
應該返回實際的索引。
請提供一個更好的示例,使其更清晰。 –