查找其他列表项中列表项的列表索引

2024-04-29

我有一个长字符串列表,我想获取与另一个列表中的字符串子字符串匹配的列表元素的索引。使用列表理解可以轻松检查列表项是否包含列表中的单个字符串,例如这个问题 https://stackoverflow.com/questions/4843158/check-if-a-python-list-item-contains-a-string-inside-another-string?rq=1:

my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
thing_to_find = "abc"
matching = [i for i, x in enumerate(my_list) if thing_to_find in x]

但是,我不仅想检查是否"abc" is in x,但如果另一个列表中的任何字符串也在列表中,如下所示:

my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
things_to_find = ['abc', 'def']

这显然行不通(但如果行的话那就太酷了):

matching = [i for i, x in enumerate(my_list) if things_to_find in x]

如果我单独运行命令,我可以找到列表索引,但它很乏味且可怕:

print([i for i, x in enumerate(my_list) if 'abc' in x])
# [0, 3]
print([i for i, x in enumerate(my_list) if 'def' in x])
# [1]

查找在另一个列表中找到一个列表中的元素的所有实例的索引的最佳方法是什么?


您正在寻找any()函数在这里:

matching = [i for i, x in enumerate(my_list) if any(thing in x for thing in things_to_find)]

Demo:

>>> my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> things_to_find = ['abc', 'def']
>>> [i for i, x in enumerate(my_list) if any(thing in x for thing in things_to_find)]
[0, 1, 3]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找其他列表项中列表项的列表索引 的相关文章

随机推荐