2016-01-28 43 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]