首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-2.7 .zip多个生成的列表

python-2.7 .zip多个生成的列表
EN

Stack Overflow用户
提问于 2013-07-21 00:20:49
回答 1查看 2.2K关注 0票数 2

假设我有一个函数,它根据函数调用生成X个等长列表。例如,如果在函数调用中有5个单独的字符串,它应该生成5个列表和.zip/join/合并它们为一个。

为了实现这一点,我使用这个模型函数:

代码语言:javascript
复制
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个参数时的示例结果:

代码语言:javascript
复制
>>> returnlist[0]
>>> [[['a', 'b'], 'c'], 'd']

但我需要:

代码语言:javascript
复制
>>> ['a','b','c','d']

我通过“删除”每个返回列表项目和删除额外的符号来修复它,但这似乎太粗糙了。

我相信有一种方法可以正确地.zip生成的列表,而不需要在事后理解结果。

有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-21 00:56:48

下面的内容如何:

代码语言:javascript
复制
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]]

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17764179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档