我试图在两个不同长度的列表之间找到所有匹配项的索引。
我创建了一个列表理解来比较两个列表:
my_list = ["a123", "b456", "c234", "a134", "d567", "e789", "c278"]
match_str = ["a1", "c2"]
mod_list = [i for i in my_list if any([j in i for j in match_str])]
输出为
mod_list = ['a123','c234','a134','c278']
但是,当我尝试使用this enumerate method来获取相应的索引时,我收到一条错误消息:
list_idx = [i for i, x in enumerate(my_list) if x == any([j in i for j in match_str])]
我不确定是什么造成错误。
我是否正确接近这个,还是有更好的方法? (我想在不使用循环的情况下这样做)
答案 0 :(得分:0)
因为你的代码正在迭代i
索引!您需要将其更改为x
并删除x ==
:
>>> list_idx = [i for i, x in enumerate(my_list) if x == any([j in i for j in match_str])]
^
将其更改为:
>>> list_idx = [i for i, x in enumerate(my_list) if any([j in x for j in match_str])]
>>> list_idx
[0, 2, 3, 6]