簡體   English   中英

python-2.7 .zip多個生成的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM