簡體   English   中英

在python中打印數組的子集

[英]printing subsets of an array in python

我正在嘗試在 python 中打印數組的子集,但我得到 None 類型不是可迭代錯誤

def printSubs(l,out):
  if (len(l) == 0):
    print(*out)
    return

  printSubs(l[1:],out)
  printSubs(l[1:],out.append(l[0]))
printSubs([15,20,12],[])

這會拋出 None 類型不是可迭代錯誤,但是當我將輸出復制到一個新數組中,然后將 l[0] 附加到它並將其傳遞給第二個函數調用時,它工作正常

def printSubs(l,out):
  if (len(l) == 0):
    print(*out)
    return

  printSubs(l[1:],out)
  newOut = [i for i in out]
  newOut.append(l[0])

  printSubs(l[1:],newOut)
printSubs([15,20,12],[])

這段代碼工作正常誰能解釋我為什么它發生在我身上似乎兩個代碼都做同樣的事情,因為 out 數組在不同的函數調用中具有不同的狀態。 提前致謝 :)

out.append(l[0])不返回任何東西,這就是你傳入的函數。 這就是這個錯誤的原因。

代替 -

  printSubs(l[1:],out)
  printSubs(l[1:],out.append(l[0]))

你必須要做 -

  printSubs(l[1:],out)
  out.append(l[0])
  printSubs(l[1:],out)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM