Python 直接从返回的函数列表扩展列表
我希望将函数返回值的输出扩展到一组列表Python 直接从返回的函数列表扩展列表,python,list,Python,List,我希望将函数返回值的输出扩展到一组列表 def func(): return [-1,2],[4,1] f=[1,2] g=[3,4] f,g=func() #How make it append print f,g #Expected Output: [1,2,-1,2] [3,4,4,1] 对于一个列表,我可以执行f.extend(func())但是对于多个列表呢。 不建议创建临时变量。为什么不向函数传递两个参数 def func(l1 ,l2): return l1+[
def func():
return [-1,2],[4,1]
f=[1,2]
g=[3,4]
f,g=func() #How make it append
print f,g
#Expected Output:
[1,2,-1,2] [3,4,4,1]
对于一个列表,我可以执行f.extend(func())
但是对于多个列表呢。
不建议创建临时变量。为什么不向函数传递两个参数
def func(l1 ,l2):
return l1+[-1,2],l2+[4,1]
f = [1,2]
g = [3,4]
f,g = func(f,g)
print f,g
产生
[1, 2, -1, 2] [3, 4, 4, 1]
但是,让函数扩展列表并完全避免返回值可能更容易
def func(l1 ,l2):
l1.extend([-1,2])
l2.extend([4,1])
f = [1,2]
g = [3,4]
func(f,g)
print f,g
为什么不给函数传递两个参数呢
def func(l1 ,l2):
return l1+[-1,2],l2+[4,1]
f = [1,2]
g = [3,4]
f,g = func(f,g)
print f,g
产生
[1, 2, -1, 2] [3, 4, 4, 1]
但是,让函数扩展列表并完全避免返回值可能更容易
def func(l1 ,l2):
l1.extend([-1,2])
l2.extend([4,1])
f = [1,2]
g = [3,4]
func(f,g)
print f,g
如果此问题更一般,并且您无法修改函数,请使用
zip
:
>>> f,g = (x+y for x,y in zip((f,g), func()))
>>> f
[1, 2, -1, 2]
>>> g
[3, 4, 4, 1]
如果此问题更一般,并且您无法修改函数,请使用
zip
:
>>> f,g = (x+y for x,y in zip((f,g), func()))
>>> f
[1, 2, -1, 2]
>>> g
[3, 4, 4, 1]
“不建议创建临时变量。”-有什么特殊原因吗?您是否需要在某个维度上扩展它,或者一次扩展一些N个列表,而不是两个?几乎所有的解决方案都需要临时变量,但我们仍然可以尝试使其尽可能干净。创建临时变量在python中,您只需使用“+”操作符扩展列表即可。这应该是一个很好的起点。“创建临时变量是不可取的。”-有什么特别的原因吗?您是否需要在某个维度上扩展它,或者一次扩展一些N个列表,而不是两个?几乎所有的解决方案都需要临时变量,但我们仍然可以尝试使其尽可能干净。创建临时变量在python中,您只需使用“+”操作符扩展列表即可。这应该是一个很好的起点。这感觉不对,函数并不真正关心输入,它只是附加…@KarolyHorvath我明白你的观点,但OP正在分配/想要使用返回值,所以我建议在这种模式下工作人们想做各种奇怪的事情,帮助做到这一点并不一定是个好主意。@KarolyHorvath我忽略了代码所在的上下文,所以我遵循OP的方法。请看我的编辑,我添加了另一个选项这感觉不对,函数并不真正关心输入,它只是附加…@KarolyHorvath我明白你的意思,但OP正在分配/想要使用返回值,所以我建议在这种模式下工作人们想做各种奇怪的事情,帮助做到这一点并不一定是个好主意。@KarolyHorvath我忽略了代码所在的上下文,所以我遵循OP的方法。请查看我的编辑,我添加了另一个选项