当'"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
对于列表 ['"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