python - 在Python中将两个列表组合成另一个列表对象中的笛卡尔积
问题描述
我正在寻找一种将两个 List[str] 对象制作成适合我班级的笛卡尔积的方法(python 大约一个月的新手)。
我有一个像这样的类和两个字符串列表:
# 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 组合这两个列表,但是我该如何处理我的对象呢?
解决方案
在这种情况下,嵌套循环方法并不是特别低效,但如果你想把它作为一个很好的单线使用product
,你可以这样做:
[MyClass(*pair) for pair in product(a_strings, b_strings)]
推荐阅读
- python - 如何在 alembic 升级中使用 op.execute
- arrays - 如何在本机反应中渲染对象?
- linux - 在 MAC 上安装 bcftools 时如何解决此错误?C 的问题:[ploidy.o] 错误 1
- python - 当您需要不同的参数时,如何在类中使用 if/elif?
- c# - C# WebBrowser HTML Get ByClass 不起作用
- google-cloud-platform - 如何获取在 Google Cloud Repositories 中推送新修改的历史信息?
- r - 如何将此长格式数据帧转换为宽格式?
- node.js - 是否可以仅下载附加 blob 的特定部分?
- twilio - 通过 Composer 安装时 Twilio 错误包名称无效?
- python - 如何更改 tkinter 中按钮的可见性?