簡體   English   中英

在Python中的遞歸函數之外修改列表

[英]Modifying a list outside of recursive function in Python

存在一個結構不明確的多維列表:

a=[[['123', '456'], ['789', '1011']], [['1213', '1415']], [['1617', '1819']]]

還有一個遞歸函數,用於操作列表:

def get_The_Group_And_Rewrite_It(workingList):
    if isinstance(workingList[0],str):
        doSomething(workingList)
    else:
        for i in workingList:
            get_The_Group_And_Rewrite_It(i)

隨着時間的get_The_Group_And_Rewrite_It()應該會得到一個列表,例如['123','456'] ,並且一旦獲得, doSomething函數就應該在整個列表中用['abc']重寫它。

與其他format[str,str,...]列表相同。 最后我應該得到類似

a=[[['abc'], ['abc']], [['abc']], [['abc']]]

我看到使用*links在C ++中會很容易,但是如何在Python中做到這一點呢?

對於這種情況,可以使用切片分配:

>>> a = [[['123', '456']]]
>>> x = a[0][0]
>>> x[:] = ['abc']
>>> a
[[['abc']]]

>>> def f(workingList):
...     if isinstance(workingList[0],str):
...         workingList[:] = ['abc']
...     else:
...         for i in workingList:
...             f(i)
...
>>> a=[[['123', '456'], ['789', '1011']], [['1213', '1415']], [['1617', '1819']]]
>>> f(a)
>>> a
[[['abc'], ['abc']], [['abc']], [['abc']]]

暫無
暫無

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

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