You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何用itertools.product将两列表笛卡尔乘积转为自定义类实例列表

解决方案

核心实现思路

直接用标准库itertools.product结合列表推导式即可完成需求,无需手写嵌套for循环,product底层为C实现,执行效率远高于Python层级的嵌套循环。


完整可运行代码

from itertools import product

# 已修正原定义中的缩进错误
class MyClass(object):
    str_a = None
    str_b = None

    def __init__(self, str_a, str_b):
        self.str_a = str_a
        self.str_b = str_b

# 示例输入
a_strings = ["a", "b"]
b_strings = ["x", "y", "z"]

# 一行生成目标实例列表
result = [MyClass(*pair) for pair in product(a_strings, b_strings)]

验证输出示例

你可以运行下面的代码验证结果是否符合预期:

for item in result:
    print(f"MyClass('{item.str_a}', '{item.str_b}')")

输出结果:

MyClass('a', 'x')
MyClass('a', 'y')
MyClass('a', 'z')
MyClass('b', 'x')
MyClass('b', 'y')
MyClass('b', 'z')

代码说明

  • product(a_strings, b_strings) 会生成两个列表的笛卡尔乘积迭代器,按顺序产出所有两两组合的二元组
  • *pair 是Python的参数解包语法,会将二元组的两个元素分别作为参数传入MyClass的构造方法
  • 列表推导式直接遍历product的产出结果,批量生成MyClass实例组成列表

内容的提问来源于stack exchange,提问作者cdub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:24:04