问题描述
我想看看表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 (将#修改为@)