为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您可以在中间点对列表进行切片,然后使用列表本身进行压缩:

list(zip(c, c[len(c)//2:]))


查看完整回答
反对 回复 2021-09-14
?
精慕HU

TA贡献1845条经验 获得超8个赞

如果长度完全一样,你可以这样做:

half = len(c) / 2
pairs = zip(c[:half], c[half:])

zip接受两个列表并返回一个对列表。切片分别指列表的前半部分和后半部分。


查看完整回答
反对 回复 2021-09-14
?
翻过高山走不出你

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')]


查看完整回答
反对 回复 2021-09-14
  • 3 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信