找到两个不同长度列表之间所有匹配项的索引

时间:2014-11-28 22:42:57

标签: python list indexing find

我试图在两个不同长度的列表之间找到所有匹配项的索引。

我创建了一个列表理解来比较两个列表:

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])]
TypeError:类型为'int'的参数不可迭代

我不确定是什么造成错误。

我是否正确接近这个,还是有更好的方法? (我想在不使用循环的情况下这样做)

1 个答案:

答案 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]