【问题标题】:Conditional Statement Python3条件语句 Python3
【发布时间】:2019-05-03 23:08:45
【问题描述】:

我想知道以下每次迭代的评估结果,我已经检查了互联网,但找不到任何明确的答案

如果还有更有效的方法可以做到这一点。

for i in range(0, len(c)):
    if i & True:
           pass

【问题讨论】:

  • &bitwise operator
  • 你在问代码在做什么吗?因为该代码除了从 0 计数到 c 之外什么也没做。 if i & True: 相当于写if i:。在循环的更大上下文中,i 将评估为 True 为非零,因此您可以将循环重写为 for i in range(1, len(c)):
  • @TomLubenow 对不起,我的意思是它的评估结果,代码将包含在其中
  • @TomLubenow 你在想i and True& 是位运算符,不是逻辑运算符。
  • @TomLubenow no @Barman 是正确的,因为如果它是 1,我将评估为 true,如果它是 0,我将评估为 false

标签: python python-3.x for-loop if-statement


【解决方案1】:

True 在 Python 中具有整数值 1,因此当循环将整数 i0 迭代到 c 的长度并在 i 和 @987654327 上执行按位与@,它有效地检查i 是否为奇数,如果是,则执行pass 语句(我相信您的真实代码中有更多代码)。

至于更高效的方法,不是生成0到c的长度之间的所有数字并过滤掉偶数,可以使用range函数的step参数生成首先是所需的奇数序列:

for i in range(1, len(c), 2):
    pass

【讨论】:

    【解决方案2】:

    i & True 对偶数计算为 0,对奇数计算为 1

    for i in range(0, 5): 
        print(i, i & True)
    

    产量:

    (0, 0)
    (1, 1)
    (2, 0)
    (3, 1)
    (4, 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 2013-03-09
      • 2011-05-29
      • 2012-07-16
      相关资源
      最近更新 更多