我正在嘗試爲排列練習編寫生成器函數。但它不會返回任何東西。 但是,如果我用''lis.append(new [k])'替換 ''ield new [k]''',那麼我會得到正確的排列列表。我是否在屈服方面做錯了什麼?Python 3練習:生成排列
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)
Ick。不要使用標籤! –
標籤有什麼問題? – user1470575
他們打破格式。他們只能小心使用,這是不值得的。永遠不要在源文件中有一個選項卡。如果您需要在某些文本中添加一個製表符,請將它寫爲''\ t'' –