我知道函数可以在Python中返回多个值。我想要做的是将列表中的每个元素作为单独的返回值返回。这可以是任意数量的元素,具体取决于用户输入。我想知道是否有这样做的pythonic方式?
例如,我有一个函数将一对项作为数组返回,例如,它将返回[a, b]
。
但是,根据给定的输入,函数可能会产生多对,这将导致函数返回[[a, b], [c, d], [e, f]]
。相反,我希望它返回[a, b], [c, d], [e, f]
截至目前,我已经实施了一个非常粗暴的功能,包含许多临时变量和计数,我正在寻找更清晰的建议。
感谢帮助!
答案 0 :(得分:5)
有一个yield语句完全匹配此用例。
def foo(a):
for b in a:
yield b
这将返回一个可以迭代的生成器。
print [b for b in foo([[a, b], [c, d], [e, f]])
答案 1 :(得分:3)
执行python函数时:
return a, b, c
它实际返回的是元组(a, b, c)
,并且元组在赋值时被解压缩,因此您可以说:
x, y, z = f()
一切都很好。所以,如果你有一个清单
mylist = [4, "g", [1, 7], 9]
您的功能可以简单:
return tuple(mylist)
并且表现得像你期望的那样:
num1, str1, lst1, num2 = f()
将按照您的预期进行作业。
如果真正想要的是一个函数将一个不确定数量的事物作为一个可以迭代的序列返回,那么你想要使用{{{{{{ 1}},但那是一个不同的蜡球。
答案 2 :(得分:0)
看看这个问题: How to return multiple values from *args?
重要的想法是返回值,只要它们是一个容器,就可以扩展为单个变量。
答案 3 :(得分:0)
但是,根据给定的输入,该函数可能会产生多对,这将导致函数返回[[a,b],[c,d],[e,f]]。相反,我希望它返回[a,b],[c,d],[e,f]
你能不能只使用返回的列表(即列表[[a,b],[c,d],[e,f]])并从中提取元素?似乎符合您的任意数量/多个值的标准。
答案 4 :(得分:0)
答案很简单,只需通过提供所需的分隔符来连接列表元素
连接方法的语法:
"separator".join(iterable)
例如让我们考虑一个函数,您需要返回以逗号 (,) 分隔的所有列表值
def fun(samp_list):
return ",".join(samp_list)
print(fun(["1","2","3"]))
答案如下
1,2,3
示例 2:返回由新行分隔的列表值
def fun(samp_list):
return "/n".join(samp_list)
print(fun(["1","2","3"]))
这个函数的输出如下
1
2
3
希望有用
点赞支持!