V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
awker
V2EX  ›  Python

Python 多个列表如何合并成一个大列表?

  •  
  •   awker · 2017-11-24 18:11:03 +08:00 · 9808 次点击
    这是一个创建于 2581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    a = [1]

    b = [2]

    c = [3]

    d = []

    如何合并成 d = [[1], [2], [3]]?
    16 条回复    2017-11-27 20:02:45 +08:00
    wwqgtxx
        1
    wwqgtxx  
       2017-11-24 18:16:25 +08:00   ❤️ 1
    d.append(a)
    d.append(b)
    d.append(c)
    wizardoz
        2
    wizardoz  
       2017-11-24 18:16:33 +08:00   ❤️ 1
    d = [l for l in [a, b, c, d] if len(l) > 0]
    seki
        3
    seki  
       2017-11-24 18:16:34 +08:00   ❤️ 1
    没看懂,d = [a, b, c] 不行吗
    awker
        4
    awker  
    OP
       2017-11-24 19:01:37 +08:00
    @wizardoz 可以 厉害
    jxie0755
        5
    jxie0755  
       2017-11-24 23:18:22 +08:00   ❤️ 1
    d = [a, b, c]
    lll9p
        6
    lll9p  
       2017-11-25 00:35:47 +08:00   ❤️ 1
    过滤掉 d 为[],然后合并成个列表?

    list(filter(None,[a,b,c,d]))
    lll9p
        7
    lll9p  
       2017-11-25 00:37:26 +08:00   ❤️ 1
    [l for l in [a, b, c, d] if l]

    这样貌似快一些
    @wizardoz #2
    scriptB0y
        8
    scriptB0y  
       2017-11-25 00:40:14 +08:00   ❤️ 1
    @lll9p 是的 len([]) > 0 这不 pythonic
    NoAnyLove
        9
    NoAnyLove  
       2017-11-25 08:01:14 +08:00   ❤️ 1
    来个题外的,如果是要把 a、b、c 合并成[1, 2, 3],那么可以用 d=sum([a, b, c], [])
    wellsc
        10
    wellsc  
       2017-11-25 08:23:38 +08:00 via iPhone   ❤️ 1
    @wizardoz 时间复杂度会不会太高了
    zhengjian
        11
    zhengjian  
       2017-11-25 10:32:32 +08:00 via iPhone   ❤️ 1
    @NoAnyLove d = a + b + c
    NoAnyLove
        12
    NoAnyLove  
       2017-11-25 10:51:56 +08:00   ❤️ 1
    @zhengjian 嗯,我举措例子了。。。。。。。应该是展开的例子。。。。。。

    >>> d = [[1,2,3], [4,5], [6,7]]
    >>> sum(d, [])
    [1, 2, 3, 4, 5, 6, 7]
    SingeeKing
        13
    SingeeKing  
       2017-11-25 16:21:34 +08:00   ❤️ 1
    @NoAnyLove 为什么不直接 a + b + c
    hcnhcn012
        14
    hcnhcn012  
       2017-11-26 00:44:33 +08:00 via iPhone   ❤️ 1
    [a,b,c]直接引用应该是最快的吧
    NoAnyLove
        15
    NoAnyLove  
       2017-11-26 11:05:54 +08:00   ❤️ 1
    @SingeeKing 因为我举错例子了。。。。。应该#12 楼的那种情况才这样用
    cbiqih
        16
    cbiqih  
       2017-11-27 20:02:45 +08:00   ❤️ 1
    from itertools import chain
    d = list(chain(a, b, c))
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3147 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:58 · PVG 20:58 · LAX 04:58 · JFK 07:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.