Python 生成数字置换的屈服点
我不熟悉python3.x(和yield),我正在尝试不使用itertools生成数字排列。我想动态生成它,所以我使用了Python 生成数字置换的屈服点,python,python-3.x,generator,Python,Python 3.x,Generator,我不熟悉python3.x(和yield),我正在尝试不使用itertools生成数字排列。我想动态生成它,所以我使用了yield关键字,但我没有得到任何输出 def nextPermutation(self, nums): permute_generator = self.permuteHelper(nums, 0, len(nums) - 1) for item in permute_generator: print(item) def permuteHel
yield
关键字,但我没有得到任何输出
def nextPermutation(self, nums):
permute_generator = self.permuteHelper(nums, 0, len(nums) - 1)
for item in permute_generator:
print(item)
def permuteHelper(self, a, l, r):
if l == r:
yield a
else:
for i in range(l, r + 1):
a[l], a[r] = a[r], a[l]
self.permuteHelper(a, l + 1, r)
a[l], a[i] = a[i], a[l]
我需要在这里更改什么?您的递归案例不会产生任何结果,因为您没有对递归调用的值进行任何操作。对于递归生成器,您可能希望使用
yield from
。我不确定添加它是否会使您的代码生成您期望的排列,但它至少会产生一些值
def permuteHelper(self, a, l, r):
if l == r:
yield a
else:
for i in range(l, r + 1):
a[l], a[r] = a[r], a[l]
yield from self.permuteHelper(a, l + 1, r) # add yield from here!
a[l], a[i] = a[i], a[l]