def per1(seq):
if not seq:
return [seq]
else:
res=[]
for i in range(len(seq)):
rest=seq[:i]+seq[i+1:]
for x in per1(rest):
res.append(seq[i:i+1]+x)
return res
print(per1('abc'))
該函數打印序列的排列列表,但我不確定inner for循環是如何工作的。我曾嘗試使用trace()
來查看控制是如何通過循環移動的,但我無法確定循環第二次如何工作。第一次,' rest '
的值是'bc','c'
。內循環在每次迭代時如何附加?
在一張紙上寫下變量,然後假裝你是執行每個語句的計算機。 – Barmar
你使用什麼樣的IDE?嘗試利用斷點和打印語句。對於調試和理解迭代非常有用 –
僅供參考,'seq [:i] + seq [i + 1:]'只是seq [i]'被刪除的字符串,'seq [i:i + 1]與'seq [i]'相同。 – Barmar