Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Pandas、Numpy加速Python中的嵌套for循环逻辑?_Python_Python 3.x_Pandas_Numpy - Fatal编程技术网

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

如何使用Pandas、Numpy加速Python中的嵌套for循环逻辑?,python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,我想检查tableTestProject的字段是否包含客户端传递的参数,嵌套for循环是否丑陋,是否有任何有效且简单的方法来实现它?非常感谢你的建议 def test(parameter_a: list, parameter_b: list) -> bool: age = TestPeople.age project_code = TestProject.project_code if age is not None and age <= 16:

我想检查table
TestProject
的字段是否包含客户端传递的参数,嵌套for循环是否丑陋,是否有任何有效且简单的方法来实现它?非常感谢你的建议

def test(parameter_a: list, parameter_b: list) -> bool:
    age = TestPeople.age
    project_code = TestProject.project_code
    if age is not None and age <= 16:
        for code in project_code:
            for p in parameter_a:
                if code[:len(p)] == p:
                    return False
    return True
def测试(参数a:list,参数b:list)->bool:
age=TestPeople.age
project\u code=TestProject.project\u code
如果年龄不是无且年龄可以使用,并且

说明


在这里,python尝试使用
短路求值
,因此它将首先检查
age是否为None
,如果为,则
返回True
,否则检查
age>16
,如果为
返回True
,否则检查
所有
代码,p
对是否匹配条件
code>startswith(p)
,如果所有对都通过了条件,
返回True
,否则如果对中的任何一对失败,
立即返回False
,而不检查其余部分。

code.startswith(p)
比将
p
与切片进行比较更干净,可能更快。如果条件为False,您仍然必须返回
True
,这可以用一个表达式来完成。
返回年龄为None或age>16或all(…)
(当我看到你的弹出窗口时,我写了基本相同的答案。:)@chepner谢谢,忘记了第一个if检查。@SayandipDutta非常感谢,再次确认,不需要
返回True
,真的吗?
from itertools import product

def test(parameter_a: list, parameter_b: list) -> bool:
    age = TestPeople.age
    project_code = TestProject.project_code
    return (
        age is None 
        or age > 16
        or all(code.startswith(p) for code, p in product(project_code, parameter_a))
    )