我需要找到列表中不是特定子列表的一部分的元素的索引。正在搜索一個孤立的列表元素
下面是一個例子:
List = [0,0,0,1,1,1,1,0,0,0,1,0,0]
我有一個函數來確定一個列表是一個大名單的一個子表,但我不知道如何使用,在這種情況下,由於隔離1
可能在列表的開頭或結尾。總會有四個連續的1
和一個孤立的1
。
輸入是一個連續四個1
s和一個單獨1
的列表。所有其他元素是0
。
輸出應該是隔離元素的位置(索引),在本例中爲10
。
我需要找到列表中不是特定子列表的一部分的元素的索引。正在搜索一個孤立的列表元素
下面是一個例子:
List = [0,0,0,1,1,1,1,0,0,0,1,0,0]
我有一個函數來確定一個列表是一個大名單的一個子表,但我不知道如何使用,在這種情況下,由於隔離1
可能在列表的開頭或結尾。總會有四個連續的1
和一個孤立的1
。
輸入是一個連續四個1
s和一個單獨1
的列表。所有其他元素是0
。
輸出應該是隔離元素的位置(索引),在本例中爲10
。
你可以通過1
和length of list - 2
,既包容性,並打印由0s
包圍元素,for循環檢查之前,如果啓動elemnt,無論是1
和第二個元素是0
,或者在每個元素循環對於最終元素是否爲1
,倒數第二個元素是0
。
代碼會是這樣的 -
if lst[0] == 1 and lst[1] == 0:
return 0
if lst[len(lst)-1] == 1 and lst[len(lst)-2] == 0:
return 1
for i in range(1,len(lst)-1):
if lst[i] == 1 and lst[i-1] == 0 and lst[i+1] == 0:
return i
使用xrange
在蟒蛇2.x的更好的內存使用情況
似乎完美地工作,謝謝:) –
這是非常適合itertools.groupby
:
from operator import itemgetter
from itertools import groupby
def find_isolated_item(seq, search):
for k, g in groupby(enumerate(seq), key=itemgetter(1)):
index, item = next(g)
if item == search and sum(1 for _ in g) == 0:
return index
...
>>> find_isolated_item([0,0,0,1,1,1,1,0,0,0,1,0,0], 1)
10
>>> find_isolated_item([1,0,0,1,1,1,1,0,0,0,0,0,0], 1)
0
能否請你解釋更多關於你的問題? 什麼是輸入? 預期產量是多少? –
你的意思是你需要找出列表中被不同元素(不同值)包圍的元素嗎? –
是的,但元素也可以在列表的開始或結尾,因此只有一個周圍的元素,例如[1,0,0 ... –