【问题标题】:If all elements match requirement not using "if all"如果所有元素都符合要求,则不使用“如果全部”
【发布时间】:2019-05-10 03:31:20
【问题描述】:

我正在用一本书来学习 python:练习是编写一个程序,如果列表中的所有数字都是赔率,则打印 True。

我明白这种方法

if all(x % 2 == 1 for x in list):

但尚未解释“如果全部”方法。它们仅在示例中使用 while、if、for 和布尔值。此外,这似乎是一种关于是否有可能做到这一点的反身练习。使用上面的基本工具可以做到吗?

【问题讨论】:

  • all 只是 Python 中的一个函数,用for 可以轻松实现。您可能会考虑尝试自己编写all 作为一个很好的编程练习。
  • 阅读all的文档

标签: python list for-loop


【解决方案1】:

如果您查看文档:https://docs.python.org/3/library/functions.html#all

所有(可迭代)。
如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

所以if all(x % 2 == 1 for x in li): 大致翻译为

def are_all_odds(num_list):

    #Flag to keep track if we encounter an even number
    flag = True
    for num in num_list:
        #Once we encounter a even number, we break the for loop
        if num % 2 != 1:
            flag = False
            break

    #Return the flag
    return flag

我们可以通过做来测试这个功能

print(are_all_odds([1, 2, 3, 4]))
#False
print(are_all_odds([1, 3, 5]))
#True

也只是一个建议,list 是一个 python 内置关键字,所以不要在变量中使用它:)

【讨论】:

    【解决方案2】:

    是的,有可能。

    您编写的 Python 代码非常地道,继续努力。

    要了解如何以不同的方式执行此操作,您可以查看不太高级的编程语言,例如 C。这是一种非常基本的编程语言,缺少此 if all 语句的功能。搜索“c all elements array true”应该会给你你正在寻找的代码。对于这么简单的一段代码,很容易将代码翻译回Python。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多