【问题标题】:python: flat zip [duplicate]python:扁平拉链[重复]
【发布时间】:2020-05-22 05:44:26
【问题描述】:

我有

a = [1, 2, 3, 4, 5]
b = ['a', 'b', 'c', 'd']

其中a 多了一个元素。 zip(a,b) 返回[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]。但是,我想要

[1, 'a', 2, 'b', 3, 'c', 4, 'd']

什么是最优雅的方式?

【问题讨论】:

标签: python


【解决方案1】:

itertools 有这个功能。

from itertools import chain

a = [1, 2, 3, 4, 5]
b = ['a', 'b', 'c', 'd']
result = list(chain.from_iterable(zip(a, b)))

【讨论】:

    【解决方案2】:

    使用列表推导,可以使用以下内容:

    a = [1, 2, 3, 4, 5]
    b = ['a', 'b', 'c', 'd']
    result = [item for sublist in zip(a, b) for item in sublist]
    # result is [1, 'a', 2, 'b', 3, 'c', 4, 'd']
    

    这使用https://stackoverflow.com/a/952952/5666087 中的列表展平理解。

    【讨论】:

    • 但这是两个 for 循环,我认为这不是很干净,但可能更快` xx = [] , _ = [xx.extend([x,y]) for x, y在 zip(a,b)] ` 现在 xx 是 ` [1, 'a', 2, 'b', 3, 'c', 4, 'd'] `
    • 也许吧,但我会选择干净的代码而不是快速的代码。 过早的优化是万恶之源
    猜你喜欢
    • 2012-07-01
    • 2021-05-06
    • 2016-11-23
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多