【问题标题】:Don't understand 'if product & 1'不明白'if product & 1'
【发布时间】:2019-02-10 03:40:15
【问题描述】:

我正在从“w3resource”做 Python 练习。练习是“编写一个 Python 函数,从整数值序列中找到一对不同的数字,其乘积为奇数。”。

代码如下所示。我不明白“if product & 1”的全部内容。符号 '&' 似乎是 set.intersection 但不确定。同时,为什么会出现'return True'和'return False'?谁能解释一下?谢谢。

def product(lst):
    for i in range(len(lst)):
        for j in range(len(lst)):
            if i != j:
                product = lst[i] * lst[j]
                if product & 1:
                    return True
                    return False

print(product([2, 4, 6, 8]))
print(product([1, 6, 4, 7, 8]))

【问题讨论】:

  • 这是按位的 and: docs.python.org/3/library/…
  • product & 1 是一种检查数字是否为偶数的神秘方法。最好更明确一点:product % 2。第二个return False 声明无法访问,因此完全没有意义。
  • 谢谢斯蒂芬和胡安帕!

标签: python


【解决方案1】:

product & 1表示检查乘积是否为奇数,因为奇数的二进制表示的最后一位总是1,而偶数的最后一位是0。

看来你真的不知道 & 的意思。 & 是位运算符。以下是计算 5 和 9 的方法:

1) 将 5 转换为二进制表示 (5)10 = (101)2

2) 将 9 转换为二进制表示 (9)10 = (1001)2

3) 对于每个二进制数字,& 有两个 1 为 1,否则为 0。所以

    ( 101)2 
  & (1001)2
  = (0001)2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-05
    • 2013-01-25
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多