对于循环清晰度

Mic*_*mer 3 python for-loop

我有2个不同的代码:

def bar(a):
    return [ x**3 for x in a ]
Run Code Online (Sandbox Code Playgroud)

def cube(a):
    for x in a:
        return x**3
Run Code Online (Sandbox Code Playgroud)

如果我将bar(a)定义为([1,2,3,4]),我的输出将是[1,8,27,64].如果我将cube(a)定义为([1,2,3,4]),我的输出只是1.为什么?他们不是假设给出相同的输出吗?不是"for a in a"对于a中的每个x是否意味着执行以下迭代?

Fre*_*son 5

在循环内返回不会创建列表,它只返回一个值,中止循环.您的第一个示例正常工作,因为它是一个列表解析 - 它创建一个列表并返回它.