[英]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.