作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了这行很好的Python代码,用于n个列表的笛卡尔积,我想将其分多行带回来:
def cart_product_1(*seqs):
if not seqs:
return [[]]
else:
return [[x] + p for x in seqs[0] for p in cart_product_1(*seqs[1:])]
这对我来说似乎很简单,但显然我在这里遗漏了一些东西。我想我需要在某处附加一个列表,但不太明白。
def cart_product_1(result,*seqs):
if not seqs:
return [[]]
else:
for x in seqs[0]:
for p in cart_product_1(result,*seqs[1:]):
result.append([x]+p)
return result
这会导致内存错误。
最佳答案
示例中的行是 list comprehension 。基本上,一行是构建一个列表并计算其成员。
要做同样的事情,你必须添加一个初始化器并返回:
result = []
for x in seqs[0]:
for p in cart_product_1(*seqs[1:]):
result.append([x]+p)
return result
关于python - 在没有 itertools 的情况下使用 python 进行笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47275300/
我是一名优秀的程序员,十分优秀!