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 日 · 10291 次点击
    这是一个创建于 2991 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 日   ❤️ 1
    d.append(a)
    d.append(b)
    d.append(c)
    wizardoz
        2
    wizardoz  
       2017 年 11 月 24 日   ❤️ 1
    d = [l for l in [a, b, c, d] if len(l) > 0]
    seki
        3
    seki  
       2017 年 11 月 24 日   ❤️ 1
    没看懂,d = [a, b, c] 不行吗
    awker
        4
    awker  
    OP
       2017 年 11 月 24 日
    @wizardoz 可以 厉害
    jxie0755
        5
    jxie0755  
       2017 年 11 月 24 日   ❤️ 1
    d = [a, b, c]
    lll9p
        6
    lll9p  
       2017 年 11 月 25 日   ❤️ 1
    过滤掉 d 为[],然后合并成个列表?

    list(filter(None,[a,b,c,d]))
    lll9p
        7
    lll9p  
       2017 年 11 月 25 日   ❤️ 1
    [l for l in [a, b, c, d] if l]

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

    >>> d = [[1,2,3], [4,5], [6,7]]
    >>> sum(d, [])
    [1, 2, 3, 4, 5, 6, 7]
    SingeeKing
        13
    SingeeKing  
    PRO
       2017 年 11 月 25 日   ❤️ 1
    @NoAnyLove 为什么不直接 a + b + c
    hcnhcn012
        14
    hcnhcn012  
       2017 年 11 月 26 日 via iPhone   ❤️ 1
    [a,b,c]直接引用应该是最快的吧
    NoAnyLove
        15
    NoAnyLove  
       2017 年 11 月 26 日   ❤️ 1
    @SingeeKing 因为我举错例子了。。。。。应该#12 楼的那种情况才这样用
    cbiqih
        16
    cbiqih  
       2017 年 11 月 27 日   ❤️ 1
    from itertools import chain
    d = list(chain(a, b, c))
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   911 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:27 · PVG 06:27 · LAX 14:27 · JFK 17:27
    ♥ Do have faith in what you're doing.