【发布时间】:2012-06-27 07:41:54
【问题描述】:
我正在尝试编写一个用于排列的生成器函数以进行练习。但它不返回任何东西。 但如果我更换 ''yield new[k]'' 和 ''lis.append(new[k])'',然后我得到正确的排列列表。我在收益方面做错了吗?
tup=(1,2,3) # tup can be any sequence
new=[[]]*(len(tup)+1) # memory; new[0]=[], new[1] will be length 1 permutation, etc.
lis=[] # the list of permutations
def repeat(k): # recursion
for i in tup:
if i in new[k-1]:
continue # permutation can't repeat
else: new[k]=new[k-1]+[i]
if k==len(tup):
yield new[k]
else:
repeat(k+1)
gen=repeat(1)
for i in gen:
print(i)
【问题讨论】:
-
标签有什么问题?
-
他们破坏了格式。它们只能非常小心地使用,而且不值得。永远不要在源文件中有选项卡。如果您需要在某些文本中添加制表符,请将其写成
'\t'
标签: python-3.x generator yield