从 Python 中的项目列表生成元组

我正在尝试从更大的列表中生成一个元组列表。我如何以pythonic的方式做到这一点?

c = ['A1','B1','C1','A2','B2','C2']

所需的输出是这样的:

c = [('A1','A2'),('B1','B2'),('C1','C2')]

我试图遍历列表并放置一个正则表达式来匹配mattern,然后将其添加到一个元组中,但这对我来说并不令人信服..有没有更好的方法来处理这个问题?


摇曳的蔷薇
浏览 229回答 3
3回答

森栏

您可以在中间点对列表进行切片,然后使用列表本身进行压缩:list(zip(c, c[len(c)//2:]))

精慕HU

如果长度完全一样,你可以这样做:half = len(c) / 2 pairs = zip(c[:half], c[half:])zip接受两个列表并返回一个对列表。切片分别指列表的前半部分和后半部分。

翻过高山走不出你

无需假设每个元组的顺序或大小,您可以使用collections.defaultdict. 这确实假设您的字母在 AZ 范围内。from collections import defaultdictdd = defaultdict(list)c = ['A1','B1','C1','A2','B2','C2']for i in c:    dd[i[:1]].append(i)res = list(map(tuple, dd.values()))print(res)[('A1', 'A2'), ('B1', 'B2'), ('C1', 'C2')]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python