我正在編寫一個Python函數nest(a, b)
,其值爲a
和b
。然後將值a
放在list
的內部,放在另一個列表中,依此類推,直到n個級別。Python - 將字符串遞歸列表遞歸到n級
例如:
nest("foo", 3)
應該返回:
[[[["foo"]]]]
我正在編寫一個Python函數nest(a, b)
,其值爲a
和b
。然後將值a
放在list
的內部,放在另一個列表中,依此類推,直到n個級別。Python - 將字符串遞歸列表遞歸到n級
例如:
nest("foo", 3)
應該返回:
[[[["foo"]]]]
你可以寫一個recursive function實現這一目標爲:
def my_func(s, n):
return [s] if n == 0 else [my_func(s, n-1)]
樣品試驗:
>>> my_func('foo', 3)
[[[['foo']]]]
注意: Python解釋器堆棧允許有最大遞歸限制。此限制可防止無限遞歸導致C堆棧溢出並導致Python崩潰。
可以使用sys.getrecursionlimit()
功能檢查該值按照商務部:
返回的遞歸限制的當前值的 Python解釋器堆棧的最大深度。此限制可防止無限遞歸 導致C堆棧溢出並導致Python崩潰。它可以是由setrecursionlimit()設置的 。
即使沒有限制,遞歸也是一種在Python中實現它的糟糕方式,需要額外的函數調用需要大量的內存和大量的開銷。 – chepner
你可以試試這個,
def nest(obj, depth):
ret = obj
for _ in range(depth):
ret = [ret]
return ret
這是一個遞歸解決方案,它幾乎順其自然從問題的定義:
def nest(val, n):
if n <= 0:
return val
else:
return [ nest(val, n - 1) ]
確定。你有什麼嘗試? –
這個板子是關於幫助你解決一個具體的問題。因此你必須自己做一些工作。一個問題,如:我想xy你可以爲我編程通常需要一個專業人士,因此花錢;) –
我想'巢(「foo」,0)'應該''foo「',而不是'[」foo 「]',這意味着'nest(」foo「,3)'應該是'[[」foo「]]]''。 – chepner