如果所有元素均符合要求,则不使用“如果全部”

时间:2019-05-10 03:31:21

标签: python list for-loop

我正在用一本书学习python:练习是使一个程序在列表中所有数字都为零的情况下打印True。

我理解这种方法

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

但是“一切皆有”的方法尚未得到解释。在示例中,它们仅使用while,if和for布尔值。此外,似乎有可能进行反射性练习,也许没有。可以使用上面的基本工具吗?

2 个答案:

答案 0 :(得分:4)

是的,有可能。

您编写的Python代码非常惯用,请继续做好这项工作。

要了解如何进行不同的处理,可以查看不太高级的编程语言,例如C。这是一种非常基本的编程语言,缺少此if all语句的功能。搜索“ c all elements array true”应为您提供所需的代码。对于这样一个简单的代码,可以很容易地将代码转换回Python。

答案 1 :(得分:4)

如果您查看文档:{​​{3}}

  

全部(可迭代)。
  如果iterable的所有元素都为true(或者iterable为空),则返回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内置关键字,所以不要在变量中使用它:)