2016-01-28 44 views
1

我希望将函数的返回值的输出扩展为一组列表。直接从函数的返回列表中扩展列表

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())但是多个列表呢。 创建临时变量不是首选。

+0

“创建临时变量不被优先选择。” - 为什么不呢?你是否需要在某个维度上扩展这个范围,或许是一次扩展一些N个列表而不是两个?几乎任何解决方案都需要临时变量,但我们仍然可以尝试尽可能使其变得干净。 – user2357112

+0

创建临时变量 –

+0

在python中,您可以简单地使用'+'运算符来扩展列表。这应该是一个很好的起点。 – ishaan

回答

4

为什么不能传递给函数的两个参数

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 
+0

这感觉不对,函数并不真正关心输入,它只是追加... –

+0

@KarolyHorvath我明白你的意思,但OP是分配/想要使用返回值,所以我建议了一些在该模式下工作 – Pynchia

+1

人们希望做各种奇怪的事情,帮助做到这一点不一定是个好主意。 –

3

如果这个问题更一般,而且你不能修改你的功能,请使用zip

>>> f,g = (x+y for x,y in zip((f,g), func())) 
>>> f 
[1, 2, -1, 2] 
>>> g 
[3, 4, 4, 1]