可以說我有一個函數可以根據函數調用生成X個相等長度的列表。例如,如果在函數調用中有5個單獨的字符串,它應該生成5個列表並將它們合併爲一個。python-2.7 .zip多個生成列表
要做到這一點,我使用這個功能樣機:
def FetchData(*args):
returnlist = []
for arg in args:
datalist = generate.list(arg) #obviously not a real method.
if returnlist == []
returnlist = datalist
else:
returnlist = map(list, zip(returnlist, datalist))
return returnlist
如果有0,1或2個參數也能正常工作。 但是,如果有更多的,事情就變得怪異:
下面是一個簡單的結果,當FetchData()得到4個參數:
>>> returnlist[0]
>>> [[['a', 'b'], 'c'], 'd']
但我需要:
>>> ['a','b','c','d']
我八九不離十固定它通過'分離'每個返回列表項目並刪除多餘的符號,但這似乎太粗糙。
我相信有一種方法可以正確地.zip生成的列表,而不需要在之後理解結果。
任何人都可以幫忙嗎?
我不完全知道你是問什麼,但它聽起來像你想你寫自己:[itertools.chain](http://docs.python.org/2/library/itertools.html#itertools.chain)(或類似的東西) –
不,更多沿着itertools.izip的線但是,這樣做不工作在一個循環,我仍然得到上述結果。回顧一下,我試圖從未知數量的列表中獲取一個壓縮列表。因此,循環。 – Andy
因此給出'[1,2,3],[4,5,6],[7,8 9]'需要什麼輸出? –