繁体   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