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

制作元组的笛卡尔不起作用

制作元组的笛卡尔不起作用

桃花长相依 2021-09-11 13:35:44
有以下元组:t = (('x', (1, 2, 3), ('A', 'B')),     ('y', (5, 6), ('E', 'G')))如何将元组制成笛卡尔,如下所示:(('x', 1, 'A'), ('x', 1, 'B'), ('x', 2, 'A'), ... ('y', 6, 'G')以下不起作用:from itertools import product[(product(zip(a[0], a[1], a[2]))) for a in t]
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

无需使用zip,只需解压每个元组:


from itertools import product


data = (('x', (1, 2, 3), ('A', 'B')), ('y', (5, 6), ('E', 'G')))


result = [p for tup in data for p in product(*tup)]


for p in result:

    print(p)

输出


('x', 1, 'A')

('x', 1, 'B')

('x', 2, 'A')

('x', 2, 'B')

('x', 3, 'A')

('x', 3, 'B')

('y', 5, 'E')

('y', 5, 'G')

('y', 6, 'E')

('y', 6, 'G')


查看完整回答
反对 回复 2021-09-11
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这是 XY 问题的一个极端例子。


你到底为什么想要那个?我真的认为你真正的问题是完全不同的,强烈建议你问问你真正打算做什么。


但只是为了满足形式,这里有一个方法:


from itertools import chain, starmap, product

tuple(chain.from_iterable(starmap(product, t)))


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号