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

标签 python string python-3.x list-comprehension

我有一个名为 strList 的字符串列表,其中包含大约 800,000-2,200,000 元素。每个元素包含大约 100 个字符。我有另一个名为 findStrs 的字符串列表,它通常包含少于 5 元素(5 到 10 个字符的字符串)。我想选择包含 findStrs 中所有元素的 strList 元素。我怎样才能在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)

我也尝试设计一种基于列表理解的方法,但毫不奇怪,它不起作用:

[strr for strr in strList if [findStr in strr for findStr in findStrs]]

最佳答案

juanpa.arrivillaga在评论部分中建议我可以使用以下基于列表理解的解决方案轻松完成我想做的事情:

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

关于python - 检查列表的元素是否包含另一个列表的所有元素的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502908/

相关文章:

python - 将 cURL 转换为 Python 请求错误

python-3.x - 将Jupyter Notebook转换成MS Word文档.doc?

python - 保留最大绝对值并返回具有重复索引的行的平均值

c - 改进我的 C 风格字符串使用

java - 使用 ArrayList<String> 的 Android Java 字符串数组

python - Python中异常的程序流程和变量修改

python - Python 中是否有与 matlab 的 imtransform 函数等效的函数?

python - 检查是否可以在 Python 中评估字符串(使用 eval())

python - 使用 pytest 执行特定测试

java - 如何在 Java 中使用带有 `^` 标志的 printf 使文本居中?