首页 > 解决方案 > 列表理解 - 连接每个子列表中的第 n 个项目

问题描述

这个想法是从子列表中连接第 n 个项目,如下所示。在这里,我想自动化这样一种方式,我不需要每次根据原始列表的长度手动定义每个 ol[0] 或 ol[1],即 ol; 有什么可能吗?

例如,如果我的输入列表是:

[("a","b","c"),("A","B","C")]

期望的结果是:

['aA', 'bB', 'cC']

这是我当前执行此操作的代码:

ol = [("a","b","c"),("A","B","C")]

x=None
y=None

nL=[(x+y) for x in ol[0] for y in ol[1] if ol[0].index(x)==ol[1].index(y)]
print(nL)

标签: pythonpython-3.xlist-comprehension

解决方案


您可以使用内置zip()函数(此示例使用 f-string 连接列表中的字符串):

ol=[("a","b","c"),("A","B","C")]
print([f'{a}{b}' for a, b in zip(*ol)])

输出:

['aA', 'bB', 'cC']

*遗嘱中的星号zip扩展了可迭代对象,因此您不必手动对其进行索引。

要使其通用并连接多个值,您可以使用此脚本:

ol=[("a","b","c"),("A","B","C"), (1, 2, 3), ('!', '@', '#')]
print([('{}' * len(ol)).format(*v) for v in zip(*ol)])

将打印:

['aA1!', 'bB2@', 'cC3#']

推荐阅读