在Python函数中Print和Return的输出不同



我想返回列表中首字母以s开头的单词,我已经执行了以下两个解决方案。一个接近解,另一个是正确的,但不是期望的精确形式。如果我使用& print"也会得到不同的结果;与"return"在python函数中。为什么会这样呢?请给我指路。

方法1:

def s(opt):
for a in opt:
if a[0] == 's':
return(a)
s(['soup','dog','salad','cat','great'])

我通过运行这段代码得到的输出是'汤' -这也是在倒逗号-为什么?

<标题>方法2:
def s(opt):
for a in opt:
if a[0] == 's':
print(a)
s(['soup','dog','salad','cat','great'])

我通过这种方法得到的输出是汤,沙拉在垂直形式没有倒逗号和所有。为什么?

我的问题是如何通过保持函数方法的返回来获得所需的输出?另一个问题,为什么输出是不同的,当使用打印与返回在上述方法?

期望输出:['soup', 'salad']

yield代替return。当条件if a[0] == 's'为真时,则s()函数返回。

如果您想在满足要求时返回多个值,那么您必须使用另一个列表来存储您的答案,或者您可以使用列表推导式

def s(opt):
for a in opt:
if a[0] == 's':
yield a

print(list(s(['soup', 'dog', 'salad', 'cat', 'great'])))
# Output
# ['soup', 'salad']

使用print的版本可以工作,因为它只是打印找到的值,并且直到循环结束才从函数返回。它的用处不大,因为它返回None,所以您不能使用结果本身——您只能看到打印的输出。

您的return语句将返回符合该条件的第一个元素。在此点之后,它将不再继续检查列表中的其他元素。您需要构造一个包含返回值的list:

def s(opt):
result = []
for a in opt:
if a[0] == 's':
result.append(a)
return result
print(s(['soup', 'dog', 'salad', 'cat', 'great']))

这段代码使用list.append将元素逐个添加到result列表中。然后,在函数结束时,它返回result.

或者,使用列表推导式:

def s(opt):
return [a for a in opt if a[0] == 's']
print(s(['soup', 'dog', 'salad', 'cat', 'great']))

在这两种情况下,输出都是预期的:

['soup', 'salad']

这是因为一旦在函数中返回值,函数就会停止。一旦它返回soup,整个函数就会停止,但是当您将每个函数打印出来时,就会得到所有结果。这是你的问题的解决方案:

def s(opt):
answers = []
for a in opt:
if a[0] == 's':
answers.append(a)
return(answers)
s(['soup','dog','salad','cat','great'])
def s(opt):
matches = []
for a in opt:
if a[0] == 's':
matches.append(a)
return matches
s(['soup','dog','salad','cat','great'])

这应该会给出你想要的输出

  1. use return the loop is stop and return value "在其他";"上打印";"将不会停止循环并继续运行
  2. func return是diff, print只是显示值,return将返回你以后可以使用的值
def s(opt):
for a in opt:
if a[0] == 's':
return(a)
# r is soup
r = s(['soup','dog','salad','cat','great'])
def s(opt):
for a in opt:
if a[0] == 's':
print(a)
s(['soup','dog','salad','cat','great'])
# z is None
z = s(['soup','dog','salad','cat','great'])

我建议您使用包含您想要的值的列表并返回

def s(opt):
l = []
for a in opt:
if a[0] == 's':
l.append(a)
return l

相关内容

最新更新