【发布时间】:2021-11-06 03:00:34
【问题描述】:
我正在寻找一种方法(现在对 python 的新手大约一个月了)将两个 List[str] 对象制作成适合我班级的笛卡尔积。
我有一个这样的类和两个字符串列表:
# Sample data but could be any strings really
a_strings = ["a", "b"];
b_strings = ["x", "y", "z"];
类的声明如下:
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
我希望输出是这样的:
MyClass("a", "x")
MyClass("a", "y")
MyClass("a", "z")
MyClass("b", "x")
MyClass("b", "y")
MyClass("b", "z")
简单的低效方法是嵌套这样的循环(我不想这样做):
objects: List[MyClass] = []
for a in a_strings:
for b in b_strings:
object.append(MyClass(a, b)
我正在尝试找出是否有更好的方法来做到这一点:
from itertools import product
我看到了如何使用上面的 itertools 组合这两个列表,但是我该如何处理我的对象呢?
【问题讨论】:
-
这不是低效的。与分配所有这些对象的成本相比,循环的开销微不足道。
-
对象的类是更大类的一部分,并且在更大的代码中创建对象,但如果开销很小,那么我想没关系
标签: python python-3.7 itertools