gpt4 book ai didi

python - 列表中的单个元素

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

我是 python 的新手,我偶然发现了这段代码来查找列表中的单个元素

代码如下:

def single_number(arr):
ones, twos = 0, 0
for x in arr:
ones, twos = (ones ^ x) & ~twos, (ones & x) | (twos & ~x)
assert twos == 0
return ones
arr1 = [5, 3, 4, 3, 5, 5, 3]
print(single_number(arr1))

我似乎无法理解这条线在做什么

ones, twos = (ones ^ x) & ~twos, (ones & x) | (twos & ~x)
assert twos==0

最佳答案

该行的目的是实现一个操作,如果对输入应用三次,则返回原始值,如果应用一次,则保留输入。

如果我们想从包含对而不是三元组的数组中选取单个值,则更容易理解。然后我们可以做...

ones = ones ^ x

... 因为 y ^ x ^ x == y。所以所有的对都抵消了,你只剩下一个值。

正如其他人评论的那样,三项案例是一种非常讨厌的晦涩 hack,只有在性能至关重要且问题非常具体时才应使用。

我认为断言只是试图确认满足前提条件,即除了一个之外,所有数字都是三元组。它不是故障安全的。

关于python - 列表中的单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52331737/

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