gpt4 book ai didi

python - 按位或 "|"与 Python 中两个正幂的加法 "+"

转载 作者:太空狗 更新时间:2023-10-29 21:25:20 26 4
gpt4 key购买 nike

让我们考虑一下我想传递一组某些对象的状态的特定情况。为了方便和灵活(或者可能是任意的),我选择使用二进制状态,然后使用按位或“|”连接起来在我传递它们之前:

status_a = 0b1
status_b = 0b10
status_c = 0b100

statuses_to_pass = status_a | status_c # 0b101

然后我意识到在这种情况下我也可以使用加法算术运算符“+”:

status_a | status_c == status_a + status_c  
# 0b101 == 0b101 --> True

当然,当状态是两个的正幂时,这是正确的;还有一些其他注意事项,例如:

status_a | status_c | status_c == status_a + status_c + status_c  
# 0b101 == 0b1001 --> False

但让我们假设我不超出限制 - 是否有任何理由说明按位运算符比算术运算符更好? Python 引擎盖下的东西?哪个更快?或者可能还有其他我没有想到的副作用?

最佳答案

timeit 的实验表明在这些情况下添加速度更快:

import timeit
import statistics
times = {"+": [], "|": []}

for x in range(10):
for y in range(x+1, 10):
for op in "+|":
t = timeit.timeit(stmt="x {} y".format(op), setup="x=2**{};y=2**{}".format(x, y))
times[op].append(t)


statistics.mean(times["+"]) # 0.029464346377385986
statistics.mean(times["|"]) # 0.04432822428643703

关于python - 按位或 "|"与 Python 中两个正幂的加法 "+",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55498263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com