当'"fo"','"ba"'同时出现时如何得到所有的indicesr。在 Python?

how to get all the indicesr when '"fo"','"ba"' appear together. in Python?

对于列表 ['"fo"', '"ba"', '1','2','ect.','"fo"', '"ba"','ect.','57','"trip"'] 的列表,当出现 '"fo"'、'"ba"' 时,获取 '"fo"' 的所有索引的最干净的方法是什么一起在列表中。在 Python?

类似于由 MrWonderful 于 2014 年 12 月 30 日在 21:03 回答并于 7 月 28 日在 21:30 编辑的 1 项编辑 对于列表 ["foo", "bar", "baz"] 和列表 "bar" 中的项目,在 Python 中获取其索引 (1) 的最简洁方法是什么?

应该这样做:

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"]

如果您要查找 '"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"')])

你可以试试这个!我们遍历列表一次,检查我们所在的索引和下一个索引是否与您想要的匹配。如果是,我们将其添加到列表中。我们还检查我们不在列表的最后一个索引上,以避免 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

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

这就是我最终得到的。我改编了 Patrick Haugh 的回答。

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