【问题标题】:Python: how to simultaneously add two lists to a list?Python:如何同时将两个列表添加到列表中?
【发布时间】:2015-08-09 07:11:18
【问题描述】:

假设我有一个列表

l1 = []

另一个列表

l2 = ['a','b']

还有两个变量

u = 1
z = 2

现在我想将 l2 添加到 l1 并将两个变量作为列表添加到 l1 。使用 append 可以分两步完成:

l1.append(l2)
l1.append(list((u,z)))

这给了我想要的输出

[['a', 'b'], [1, 0]]

但是像

l1.append(l2, list((u,z)))

不起作用。有没有办法让我在一个不错的 oneliner 中为两个步骤获得相同的输出,即一个可以同时将一个列表附加到两个列表?

【问题讨论】:

    标签: python list append


    【解决方案1】:

    您可以使用以下任何一种方法:

    方法一:

    >>> l1.extend([l2, [u,z]])
    >>> l1
    [['a', 'b'], [1, 2]]

    append:在末尾追加对象
    extend:通过从可迭代对象中追加元素来扩展列表

    方法二:

    >>> l1 += [l2] + [[u, z]]
    >>> l1
    [['a', 'b'], [1, 2]]

    【讨论】:

    • 这不是 OP 问题中想要的输出
    • 现在修改了代码,现在得到了想要的输出。
    • 是的,这是公认的答案,但无论如何感谢您的努力!
    【解决方案2】:

    这很简单,只需创建一个生成器

    import itertools
    for item in itertools.chain(listone, listtwo):
    # do what you want to do with this merged list

    【讨论】:

    • 与公认的答案相比,这种方法有什么优势?
    • Itertools 不仅可以帮助合并,还可以根据需要进行排列和组合...
    【解决方案3】:

    你可以使用extend如下:

    l1.extend([l2,[u,z]])

    或者只是:

    l1 + [l2] + [[u,z]]

    【讨论】:

    • 感谢您提供替代解决方案!
    • 没问题,@Cleb,下次你可以投票而不是感谢评论。让其他用户看看答案是否有用。
    【解决方案4】:
    l1.extend([l2, [u,z]])
    

    append 只能将一个元素添加到列表中。 extend 获取一个列表并将其中的所有元素添加到其他列表中。

    【讨论】:

    • 效果很好,谢谢!我尝试使用“扩展”,但使用 l1.extend(l2, list((u,z))) 将其称为“附加”,这给了我同样的错误 - [] 解决了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2020-09-10
    相关资源
    最近更新 更多