2014-12-07 106 views
-3

如何在列表(列表1)中有效地查找列队列表元素(列表2)?查找列表中的列队元素

如:

list1 = ['a', 'b', 'c', 'd', 'e', 'f'] 
list2 = ['d', 'e'] 

在这种情况下,指数,因为有比赛,将是3

实际的数据是这样的字符串(事实上,从字面上看,全部是空白那里),我打算拆分,并删除空白:

+--head (1)                   
    | +--title (1)                  
    | +--meta (3)                  
    | +--link (14)                  
    | +--script (21)                  
    | +--comment (3)                  
    | +--noscript (1)                 
    |  +--iframe (1) 

而且我想匹配:

+--link (14)                  
+--script (21) 

在实际数据中,索引应该是+--link开始的地方。

+0

真的让我想起在字符串中找到一个子字符串,但我想知道python中的一个有效算法是做什么的? – PascalVKooten 2014-12-07 20:34:37

+0

是否没有其他信息可用?排序?大?多? – keyser 2014-12-07 20:35:23

+0

@keyser更新。 – PascalVKooten 2014-12-07 20:37:34

回答

1

试试这个。也许会工作正常。

def get_sublist_index(list1, list2): 
    l1, l2 = len(list1), len(list2) 
    for i in range(l1-l2): 
     if list1[i:i+l2] == list2: 
      return i 
+0

我真的在想那个......谢谢! – PascalVKooten 2014-12-07 20:44:47

+1

'范围(l1-l2)'? – keyser 2014-12-07 20:46:23

0

如果你想在哪里,该指数“+ - 链接”开始你可以使用以下方法:基于+--link然后第一片的长度为

>>> len(s.split('+--link')[0]) 
269 

先拆你的字符串'+ - link'已经开始的地方的索引!

+0

我只对找到'+ - link'有兴趣,如果它实际上是在换行符之后跟着'+ - script'。 – PascalVKooten 2014-12-07 20:42:50

+0

你能说出你想要的吗?你想要索引还是字符串? – Kasramvd 2014-12-07 20:45:01

+0

该指数,西蒙波波夫给出了答案。 – PascalVKooten 2014-12-07 20:45:51