Python 生成器错误地生成空列表
我已经在这个网站上读过了,在我的一些功能中,我一直在玩弄它,但在我的一生中,我一直无法解决这个问题 我有以下发电机功能,当输入示例值时:Python 生成器错误地生成空列表,python,Python,我已经在这个网站上读过了,在我的一些功能中,我一直在玩弄它,但在我的一生中,我一直无法解决这个问题 我有以下发电机功能,当输入示例值时: import collections import itertools import pprint import copy partition = [] def partition_prime_factors(partition_structure, prime_factors): # partition_structure is a list
import collections
import itertools
import pprint
import copy
partition = []
def partition_prime_factors(partition_structure, prime_factors):
# partition_structure is a list
# prime_factors is a collections.Counter object
global partition
for subsection_size in reversed(partition_structure):
partition_structure.remove(subsection_size)
subsections = list(itertools.combinations(prime_factors.elements(), subsection_size))
for subsection in subsections:
prime_factors -= collections.Counter(subsection)
partition.append(list(subsection))
if len(prime_factors) == 0:
pprint.pprint(globals()['partition'])
yield copy.copy(partition)
else:
for j in partition_prime_factors(partition_structure, prime_factors):
pass
prime_factors += collections.Counter(subsection)
partition.remove(list(subsection))
partition_structure.append(subsection_size)
print [i for i in partition_prime_factors([1, 3], collections.Counter([2, 2, 3, 5]))]
>>> [[2, 2, 3], [5]]
>>> [[2, 2, 5], [3]]
>>> [[2, 3, 5], [2]]
>>> [[2, 3, 5], [2]]
>>> [[2], [2, 3, 5]]
>>> [[2], [2, 3, 5]]
>>> [[3], [2, 2, 5]]
>>> [[5], [2, 2, 3]]
>>> []
因此,分区得到了正确的评估,但没有被放弃。怎样!?!?!?!英雄联盟我甚至在屈服之前复制每个分区,以避免引用同一个对象而出错。您没有屈服于递归调用
分区素数因子所得到的值。当您递归时:
for j in partition_prime_factors(partition_structure, prime_factors):
pass
您需要重新生成值:
for j in partition_prime_factors(partition_structure, prime_factors):
yield j
你指的是哪个网站?关键字的收益率如何?提供链接。@arulmr oops。问题的名字不对。我现在加入了网址,谢谢。哈哈,我真傻。。。。以前我调试函数的其余部分时,它不起作用,所以我没想到这就是问题所在。这完美地解决了我的问题。