微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Product 加速 Python 中的嵌套 for 循环逻辑?

如何解决如何使用 Product 加速 Python 中的嵌套 for 循环逻辑?

我想看看表TestProject的字段是否包含Client端传过来的参数,嵌套for循环很丑,有没有什么高效简便的实现方法?非常感谢您的建议。

def test(parameter_a: list,parameter_c: str,parameter_b: list=None) -> bool:
    """
      If project_code contains parameter_a and product_code contains 
      parameter_b,product_code must contains parameter_c """
    project_code = TestProject.project_code
    product_code = TestProduct.product_code
    
    for pj_code in project_code:
        for param in parameter_a:
            if pj_code[:len(param)] == param:
                for pd_code in product_code:
                    for p in parameter_b:
                        if (pd_code[:len(p)] == p):
                            for pc in parameter_c:
                                if pd_code[:len(pc)] == pc:
                                    return True
                            return False
    return True

根据Sayandip Dutta对此speed up nested for-loop logic in Python with itertools.product and all的回答

我可以把我的原始代码改成这个吗?我没有要测试的数据,我必须确保我的逻辑是正确的。下面的代码对吗?如果正确,它真的比我的原始代码快吗?如果不正确,有没有人可以告诉我如何实现它?非常感谢您的建议。

from itertools import product

def test(parameter_a: list,parameter_b: list=None) -> bool:
    project_code = TestProject.project_code
    product_code = TestProduct.product_code

    return (
        all(code.startswith(p) for code,p in product(project_code,parameter_a))
        and all(code.startswith(p) for code,p in product(product_code,parameter_b))
        and all(code.startswith(p) for code,parameter_c))
    )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?