搜索孤立的列表元素

时间:2015-06-14 15:44:08

标签: python list

我需要在列表中找到不属于特定子列表的元素的索引。

以下是一个例子:

List = [0,0,0,1,1,1,1,0,0,0,1,0,0]

我有一个函数来确定列表是否是更大列表的子列表,但我不知道如何在此上下文中使用它,因为隔离的1可能在开头或在列表的结尾。总会有四个连续的1和一个孤立的1

输入是一个包含四个连续1和一个孤立1的列表。所有其他元素都是0

输出应该是隔离元素的位置(索引),在本例中为10

2 个答案:

答案 0 :(得分:2)

这非常适合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)

您可以在1length of list - 2之间循环遍历每个元素,并打印0s所包围的元素,并在for循环检查之前是否为start 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

在python 2.x中使用xrange以获得更好的内存使用