[英]python-2.7 .zip multiple generated lists
可以說我有一個基於函數調用生成X個等長列表的函數。 例如,如果函數調用中有5個單獨的字符串,則應生成5個列表並將.zip / join /合並為一個列表。
為此,我正在使用此模型功能:
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生成的列表,而無需隨后理解結果。
有人可以幫忙嗎?
怎么樣:
from itertools import chain
def fetch_data(*args):
return list(chain.from_iterable(zip(*args)))
a = [ [1,2,3], [4,5,6], [7, 8, 9] ]
print fetch_data(*a)
# [1, 4, 7, 2, 5, 8, 3, 6, 9]
或者, return map(list, zip(*args))
將給您: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.