Python 多if语句的最佳解决方案(时间方面)是什么

Python 多if语句的最佳解决方案(时间方面)是什么,python,Python,下面的例子来自我的国际象棋游戏,但对于Python中的运行时优化if语句来说,问题更一般。什么类型的代码运行得更快,有很大的区别吗?请记住,在这种情况下,我将在minimax算法中计算(数千次)。案例3当然更好,但运行速度更快吗 另一个问题是,我将这些值放入的顺序是否存在差异?在这种情况下,典当选项出现的次数最多,那么在if语句/dict中首先出现该选项是否更好 # Case 1: if piece_type == 'K': value = 20000 elif piece_typ

下面的例子来自我的国际象棋游戏,但对于Python中的运行时优化if语句来说,问题更一般。什么类型的代码运行得更快,有很大的区别吗?请记住,在这种情况下,我将在minimax算法中计算(数千次)。案例3当然更好,但运行速度更快吗

另一个问题是,我将这些值放入的顺序是否存在差异?在这种情况下,典当选项出现的次数最多,那么在if语句/dict中首先出现该选项是否更好

# Case 1:
  
if piece_type == 'K':
    value = 20000
elif piece_type == 'Q':
    value = 900
elif piece_type == 'B':
    value = 330
elif piece_type == 'N':
    value = 320
elif piece_type == 'R':
    value = 500
elif piece_type == 'p':
    value = 100

return value

# Case 2:

if piece_type == 'K':
    return 20000
elif piece_type == 'Q':
    return 900
elif piece_type == 'B':
    return 330
elif piece_type == 'N':
    return 320
elif piece_type == 'R':
    return 500
elif piece_type == 'p':
    return 100

# Case 3:

piece_values = {'K': 20000, 'Q': 900, 'B': 330, 'N': 320, 'R': 500, 'p': 100}
return piece_values.get('K')
结果

对于工件类型='p'

0.043659273699999786
0.042489134299999745
0.025282950800000023
对于peice_类型='K'

0.017085672599999883
0.015899844999999937
0.02493290909999991
就像我们看到结果一样,访问dictionary的元素与元素的位置无关
访问if-else阶梯下的元素比访问阶梯顶部的元素花费更多的时间


因此,如果条件数少于if else更好,如果条件数较多,则字典更好,因为字典总是O(1)。

piece\u values[k]
可能比使用
.get
方法更快。案例3是O(1),并且速度最快。案例3中的返回表明
piece\u值
在函数内部重新生成。它只被创建过一次吗?谢谢@Alexander,这本词典的顺序有什么不同吗?例如,把典当放在第一位?我们也看到条件句的顺序很重要。棋子比国王多得多,所以要优化if条件,他们应该先来,然后是骑士、车和主教(按任何顺序),最后是女王和国王。非常感谢!还向我展示了如何在将来为类似的事情计时:D
0.017085672599999883
0.015899844999999937
0.02493290909999991