我正在用一本书学习python:练习是使一个程序在列表中所有数字都为零的情况下打印True。
我理解这种方法
if all(x % 2 == 1 for x in list):
但是“一切皆有”的方法尚未得到解释。在示例中,它们仅使用while,if和for布尔值。此外,似乎有可能进行反射性练习,也许没有。可以使用上面的基本工具吗?
答案 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内置关键字,所以不要在变量中使用它:)