【问题标题】:Python List Comprehension: Affix strings from one list to the start of strings in another, for a list of listsPython List Comprehension:将一个列表中的字符串附加到另一个列表中的字符串开头,以获得列表列表
【发布时间】:2017-12-21 14:25:19
【问题描述】:

我有两个列表,我想使用列表推导来创建列表列表。第一个列表有一些前缀,第二个有一些后缀。

prefixes = ['t1_', 't0_']
suffixes = ['price', 'sales']

列表推导应该返回

output = [['t1_price', 't1_sales'],
          ['t0_price', 't0_sales']]

我可以用一对 for 循环来完成这个:

output = []
for prefix in prefixes:
    pairs = []
    for suffix in suffixes:
        pairs.append(prefix + suffix)
    output.append(pairs)

但我认为列表理解会提高我的代码的可读性。

我怎样才能做到这一点?

【问题讨论】:

    标签: python list-comprehension


    【解决方案1】:

    您也可以使用列表推导实现此目的

    [[p+s for s in suffixes] for p in prefixes]
    #[['t1_price', 't1_sales'], ['t0_price', 't0_sales']]
    

    【讨论】:

    • 似乎我误读了这个问题(我也没有否决你的答案)。这是正确的答案。
    • 非常感谢! (也感谢您的努力,@COLDSPEED)
    • 顺便说一下,如果你选择功能风格,你可以使用list(map(lambda p: list(map(''.join, itertools.product([p], suffixes))), prefixes))来做同样的事情
    【解决方案2】:

    使用不需要嵌套理解的生成器的替代方法

    from itertools import product
    [a+b for (a, b) in product(prefixes, suffixes)]
    

    【讨论】:

      【解决方案3】:

      输出 = [[x+y for x in prefixs] for y in suffixes] 打印(输出)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-27
        • 2014-05-24
        • 2022-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多