检查列表元素是否包含另一个lis的所有元素的有效方法

2024-09-24 22:17:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为strList的字符串列表,其中包含大约800,000-2,200,000元素。{cd3>每个元素包含findStrs的字符串列表,它通常包含少于5元素(5到10个字符串)。我想选择strList中包含findStrs中所有元素的元素。如何在Python中有效地实现这一点?我是这样做的,但我想知道是否有更有效的解决方案使用列表理解来完成:

finalStrList = []
for strr in strList:
    temp = []
    for findStr in findStrs:
        if findStr in strr:
            temp.append(findStr)
    if len(temp) == len(findStrs):
        finalStrList.append(str)
print(finalStrList)

我也曾试图设计一种基于列表理解的方法,但并不奇怪,它并不奏效:

^{pr2}$

Tags: 字符串in元素列表forleniftemp
2条回答

如果匹配率不是很高,可以降低时间复杂度。在

finalStrList = []
for strr in strList:
    flag = True
    for findStr in findStrs:
        if findStr not in strr:
            flag = False
            break
    if flag:
        finalStrList.append(str)
print(finalStrList)

正如juanpa.arrivillaga在评论部分中建议的那样,我可以使用以下基于列表理解的解决方案轻松地执行我想要的操作:

[s for s in strList if all([x in s for x in findStrs])]

相关问题 更多 >