从列表中返回每个元素(Python)

lui*_*ria 5 python return return-value multiple-variable-return

我知道函数可以在Python中返回多个值.我想要做的是将列表中的每个元素作为单独的返回值返回.这可以是任意数量的元素,具体取决于用户输入.我想知道是否有这样做的pythonic方式?

例如,我有一个函数将一对项作为数组返回,例如,它将返回[a, b].

但是,根据给定的输入,该函数可能会产生多对,这将导致函数返回[[a, b], [c, d], [e, f]].相反,我希望它回来[a, b], [c, d], [e, f]

到目前为止,我已经实现了一个非常粗暴的功能,有很多临时变量和计数,我正在寻找一个更清晰的建议.

感谢帮助!

Lee*_*ker 7

当 python 函数执行时:

return a, b, c
Run Code Online (Sandbox Code Playgroud)

它实际返回的是 tuple (a, b, c),并且 tuple 在赋值时被解包,所以你可以说:

x, y, z = f()
Run Code Online (Sandbox Code Playgroud)

一切都很好。所以如果你有一个清单

mylist = [4, "g", [1, 7], 9]
Run Code Online (Sandbox Code Playgroud)

您的功能可以简单地:

return tuple(mylist)
Run Code Online (Sandbox Code Playgroud)

并按照您的预期行事:

num1, str1, lst1, num2 = f()
Run Code Online (Sandbox Code Playgroud)

将按照您的预期完成任务。

如果您真正想要的是一个函数将不确定数量的事物作为可以迭代的序列返回,那么您将希望使用 将其变成一个生成器yield,但这是一个不同的蜡球。


wen*_*zul 5

有一个yield语句可以完美匹配这个用例.

def foo(a):
    for b in a:
        yield b
Run Code Online (Sandbox Code Playgroud)

这将返回一个可以迭代的生成器.

print [b for b in foo([[a, b], [c, d], [e, f]])
Run Code Online (Sandbox Code Playgroud)

  • 不是他问的,而是他真正想要的。 (3认同)
  • @LeeDanielCrocker 顺便说一句。她是她。:) (2认同)