2017-09-28 45 views
0

有关列表['"fo"', '"ba"', '1','2','ect.','"fo"', '"ba"','ect.','57','"trip"']的列表,当“”fo“”,“”ba“'一起出现在列表中时,获取''fo''所有索引的最简单方法是什么?在Python中?如何在''fo'',''ba''一起出现时获得所有的索引。在Python中?

一个由MrWonderful 在21:30在21:03和编辑后的7月28日编辑1项回答十二月30'14有关列表["foo", "bar", "baz"]并在列表中的“酒吧”的项目一样,什么是最干净的方式来在Python中获取它的索引(1)?

回答

0

如果您正在寻找'"fo"'紧跟'"ba"',像

import itertools 

l = ['"fo"', '"ba"', '1','2','ect.','"fo"', '"ba"','ect.','57','"trip"'] 
print([i for i, x in enumerate(zip(l, itertools.islice(l, 1, None))) if x == ('"fo"', '"ba"')]) 
+0

ok-这看起来很完美,我认为我现在想要做的事情。它给了我一个超过80个指数的列表,它应该是什么。我需要了解如何找到itertools和随机模块以及如何使用它们。再次感谢。 –

0

这应做到:

for one_list in list_of_lists: 
    if ("fo" in one_list) and ("ba" in one_list): 
     return indices = [i for i, x in enumerate(one_list) if x == "fo"] 
+0

我是新来的。这是我一直在尝试的。我发现有些东西会给1个列表的索引,并且我得到它的工作。现在我想要它搜索2个列表一起出现的实例。这是我正在尝试。 –

+0

DEF指数(1,1- VAL): “” “总是返回包含val的索引中the_list列表” “” RETVAL = [] 最后= 0 而VAL在升[最后:]: 其中i = 1 (last [1]) print(l [last + 1]) retval.append(val)#finds index last list in list if l [i + 1] == date: print(l [last]) print (最后+ I) 最后+ = i + 1的 的elif升第[i + 1] =日期: 最后+ = I 返回RETVAL –

+0

升= no_spaces q =( ' “EMD”') 日期=( ''20170820'') print(indices(l,q))我试着kogito的解决方案,并不断得到文件“c:\ code \ testing.py”,第16行 返回索引= [我为i,x在枚举(one_list)如果x == no_spaces [0]] ^ SyntaxError:无效的语法谢谢大家,我想尝试帕特里克和风车的帖子,看看我是否可以将它们加入到我的程序中。 –

0

你可以试试这个!我们遍历列表一次,检查我们所在的索引和下一个事物是否与您想要的匹配。如果确实如此,我们将它添加到列表中。我们还检查我们是否不在列表的最后一个索引处以避免indexOutOfBounds异常。

results = [] 
for i in range(0, len(lst)): 
    if i < len(lst)-1 and lst[i] == '"fo"' and lst[i+1] == '"ba"': 
     results.append(i) 
return results 

请注意,这适用于您的示例,它看起来是单个列表而不是列表列表。要应用于列表列表,您可以为每个子列表的循环迭代添加一个额外的值。

0

这是我结束了。我改编了帕特里克霍的答案。

import itertools   # C-D create list of indices  
r_va=('"EMD"', '"20170820"') 
L = ([i for i, x in enumerate(zip(l, itertools.islice(l, 1, None))) if \ 
x == (r_va)]) 
e =(len(l)) 
L.append(e) # adds end length of no_spaces L is list of indexes of l 
相关问题