Python:为什么"return"不会在简单的for循环中打印出所有列表元素,"print"会这样做吗?

Ros*_*nda 1 python return list

在我将一个列表添加到另一个列表之后,我试图在Python中打印出列表中的所有元素.问题是它只在我使用PRINT或RETURN时打印出每个元素.如果我使用print,它会在列表末尾的"None"列中打印出整个列表,但return将打印出第一个项目.为什么?

这是代码:

def union(a,b):
    a.append(b)
    for item in a:
        return item


a=[1,2,3,4]
b=[4,5,6]
print union(a,b)
Run Code Online (Sandbox Code Playgroud)

它返回:

1

如果我使用

def union(a,b):
    a.append(b)
    for item in a:
        print item

a=[1,2,3,4]
b=[4,5,6]
print union(a,b)
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

1

2

3

4

[4,5,6]

没有

(甚至不是一行).

请注意,我在这个问题上找到了更多的结果(比如这个),但它们并不完全相同,而且对我来说它们非常复杂,我只是开始学习编程,谢谢!

Mar*_*ers 8

使用return语句时,函数结束.您只返回第一个值,循环不会继续,也不能以这种方式一个接一个地返回元素.

print只是将该值写入终端并且不会结束该功能.循环继续.

建立一个列表,然后返回:

def union(a,b):
    a.append(b)
    result = []
    for item in a:
        result.append(a)
    return result
Run Code Online (Sandbox Code Playgroud)

或者只返回一个串联:

def union(a, b):
    return a + b
Run Code Online (Sandbox Code Playgroud)