python - 列表理解 - 连接每个子列表中的第 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)
解决方案
您可以使用内置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#']
推荐阅读
- python - WordNet Lemmatizer 不会对 CSV 文件中单词的所有变形进行词形还原
- python - 如何在python的帮助下检查aws s3路径是否存在?
- python - Get sibling with xpath
- c++ - How to retrieve the audio input and output device names in a Linux system?
- c# - 如何在 LINQ 中使用 group-by 进行多重连接
- jquery - 从 Ajax 请求中提取字段
- python - Set or change the DEFAULT_LANGUAGE in Django
- android - Images don't load on devices when importing from firebase
- mysql - 堆与聚集索引全表扫描
- html - About adding a link to external file (another directory located) in existing html document through tag