具有if语句的最有效的Python循环

问题描述 投票:0回答:1

我正在构建一个minimax函数,并且需要对每次迭代进行一些检查。我希望迭代能够像possilbe一样有效,从而能够增加搜索深度,因此我想知道Python if语句在for循环中如何工作。让我给你一个简化的例子:

# Example 1

def test(x_start, y_start):

    for xdir, ydir in [[1, -1], [1, 1], [-1, 1], [-1, -1]]:
        x, y = x_start, y_start
        x += xdir
        y += ydir
        if not is_on_board(x, y) and board[x][y].type == 'full':
            continue

# Example 2

def test(x_start, y_start):

    for xdir, ydir in [[1, -1], [1, 1], [-1, 1], [-1, -1]]:
        x, y = x_start, y_start
        x += xdir
        y += ydir
        if not is_on_board(x, y):
            if not board[x][y].type == 'full':
                continue

示例2的效率更高,因为在某些情况下,基于该职位不在董事会上并且无需对董事会类型进行额外检查,它会跳过第一条if语句?

在我的真实代码中,有更多的带有功能和变量检查的and语句,这可能会比较耗时。因此,我想知道是否像示例2中那样将and语句分解为更多if语句是否更有效,或者这是否真的无关紧要?一般来说。

python for-loop if-statement minimax
1个回答
0
投票

[包括Python在内的大多数编程语言都会“短路”布尔逻辑检查-这意味着一旦知道真值,它们就不会继续评估。多个if语句或和/或语句之间的差异可以忽略不计,您应该考虑哪个更易读;另一方面,如果其中一些检查的价格更高或信息量更大,检查的顺序可能会有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.