我正在尝试从更大的列表中生成一个元组列表。我如何以pythonic的方式做到这一点?c = ['A1','B1','C1','A2','B2','C2']所需的输出是这样的:c = [('A1','A2'),('B1','B2'),('C1','C2')]我试图遍历列表并放置一个正则表达式来匹配mattern,然后将其添加到一个元组中,但这对我来说并不令人信服..有没有更好的方法来处理这个问题?
3 回答

精慕HU
TA贡献1845条经验 获得超8个赞
如果长度完全一样,你可以这样做:
half = len(c) / 2 pairs = zip(c[:half], c[half:])
zip
接受两个列表并返回一个对列表。切片分别指列表的前半部分和后半部分。

翻过高山走不出你
TA贡献1875条经验 获得超3个赞
无需假设每个元组的顺序或大小,您可以使用collections.defaultdict. 这确实假设您的字母在 AZ 范围内。
from collections import defaultdict
dd = 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')]
添加回答
举报
0/150
提交
取消