0

几乎每次我解决 Codewars 的练习并浏览其他解决方案时,我都会看到有些人用 2 或 3 行代码完成了我的 15 行代码。所以,我已经开始学习列表和集合理解,并会尝试其他技巧。现在我的问题是关于这段代码:

    for i in range (0, 3):
        if not text [i].isdecimal ():
            return False 

可以写成一行吗?

4

2 回答 2

2

使用all

return all(text[i].isdecimal() for i in range(0,3))

all遍历您的列表/生成器/元组/等。并评估每个项目是真还是假。False它在第一次评估 a 时退出并返回Falseany是相似的,只是它会检查所有内容以找到至少一个真实的评估。

(我假设您的原始代码是正确的,并且您只对 的前三个元素感兴趣text,并且您希望从您所在的任何函数中返回该值。)

于 2021-10-07T17:31:35.647 回答
0

您有一个更复杂的循环,如下所示:

 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)

于 2021-10-07T17:36:01.323 回答