2017-05-19 72 views
0

,如果有做的更優雅的方式我想知道的一個函數的輸出如下:擴展單獨的列表與

編輯:

def whaa(x): 
    # Let's not get too picky about this function 
    return list(range(0,x)), list(range(-1,x)) 

a, b = whaa(10) 
c = whaa(20) 
a.extend(c[0]) 
b.extend(c[1]) 

編輯:函數的行爲取決於輸入。我希望將相應的輸出整齊地放入同一個列表中。

本質上,我想要做的是訪問輸出元組的各個元素並擴展我的列表,而不必經歷將輸出存儲到單獨變量中的麻煩。它似乎是給了這個構造,這不是可能的,但我願意接受建議!

回答

2

你可以這樣做:

for x, y in zip([a, b], c): 
    x.extend(y) 

但是,爲什麼你不只是把ab列在首位呢?

c = whaa(10) 
for x, y in zip(c, whaa(20)): 
    x.extend(y) 
a, b = c      # save unpacking until the end 
+0

啊!這工作!我想保存開箱直到最後是我失蹤。謝謝! 我不明白你關於在列表中留下a和b的問題。他們是名單,不是嗎? –

+0

無論什麼類型a和b都是。只是他們是相關的,你想對他們重複類似的操作,所以把他們保存在一個集合中。列表在這裏是適當的,所以你有'[a,b]'的列表。是的,它們也是列表,所以它是嵌套列表,但'a'和'b'的類型並不重要 - 我們可以添加ints或以相同樣式更新字典。 –

2

使用for循環,延長返回的元組的每個元素:

a, b = tuple(x * 2 for x in whaa()) 

a 
# [1, 2, 3, 1, 2, 3] 

b 
# [2, 3, 4, 2, 3, 4] 

對於更新的問題,你可以使用zip作爲@約翰的回答:

a, b = tuple(x + y for x, y in zip(whaa(10), whaa(20))) 
+0

我覺得你的代碼將在工作的情況下我已經問,但我沒有考慮到以下事實,這不正是我是問。我會編輯這個問題,以反映我以後的真實情況!對於那個很抱歉! –