gpt4 book ai didi

python - 在其他列表项中查找列表项的列表索引

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:59 26 4
gpt4 key购买 nike

我有一个长字符串列表,我想获取与另一个列表中的字符串子字符串匹配的列表元素的索引。检查列表项是否包含列表中的单个字符串很容易使用列表推导来完成,例如 this question :

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" 是否在 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)]

演示:

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

关于python - 在其他列表项中查找列表项的列表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com