Python 中的 True 或 False for 循环的一个衬垫
One liner for True or False for loop in Python
几乎每次我解决 Codewars 的练习并浏览其他解决方案时,我都会看到有些人用 2 或 3 行来完成我的 15 行代码。所以,我已经开始学习列表和集合理解,并会尝试其他技巧。现在我的问题是关于这段代码:
for i in range (0, 3):
if not text [i].isdecimal ():
return False
可以写成一行吗?
使用all
:
return all(text[i].isdecimal() for i in range(0,3))
all
遍历您的 list/generator/tuple/etc。并评估每一项是真还是假。它在第一次评估 False
时退出并 returns False
。 any
类似,除了它会检查所有内容以获得至少一个真实的评估。
(我假设您的原始代码是正确的,并且您只对 text
的前三个元素感兴趣,并且您正在寻找 return 来自任何函数的值你来了。)
你有一个像这样的更复杂的循环:
for i in range(10):
if i<5:
j = i**2
else:
j = 0
print(j) ```
你可以把它压缩成一行。查看以下代码片段:
for i in range(10): print(i**2 if i<5 else 0)
几乎每次我解决 Codewars 的练习并浏览其他解决方案时,我都会看到有些人用 2 或 3 行来完成我的 15 行代码。所以,我已经开始学习列表和集合理解,并会尝试其他技巧。现在我的问题是关于这段代码:
for i in range (0, 3):
if not text [i].isdecimal ():
return False
可以写成一行吗?
使用all
:
return all(text[i].isdecimal() for i in range(0,3))
all
遍历您的 list/generator/tuple/etc。并评估每一项是真还是假。它在第一次评估 False
时退出并 returns False
。 any
类似,除了它会检查所有内容以获得至少一个真实的评估。
(我假设您的原始代码是正确的,并且您只对 text
的前三个元素感兴趣,并且您正在寻找 return 来自任何函数的值你来了。)
你有一个像这样的更复杂的循环:
for i in range(10):
if i<5:
j = i**2
else:
j = 0
print(j) ```
你可以把它压缩成一行。查看以下代码片段:
for i in range(10): print(i**2 if i<5 else 0)