Python遞迴時的可變資料型別問題

2021-09-10 09:29:10 字數 602 閱讀 9540

用c語言實現遞迴的時候,無論是單個變數還是陣列變數,當進入遞迴時,變數被壓棧,退出遞迴時,變數出棧,這沒有問題。但是在python中,整型變數是不可變資料型別,這和c語言完全一樣,但是list,ndarray等都是可變資料型別,無法儲存每層的陣列變數!!!!

import numpy as np

def test(a,x):

if a==3:

return

a=a+1

x[0]=x[0]+1

print(a,x)#進入遞迴

test(a,x)

print(a,x)#退出遞迴

可以很明顯的看到,每層的整型變數數值都儲存了,陣列變數沒有。

目前沒有找到很好的解決辦法,如果每層陣列都要改變,只能在進入遞迴前手動tuple->list(更改陣列值)->tuple(手動初始化)。

先mark一下,有好的方法了再回來更。

python中可變資料型別和不可變資料型別(詳解)

以下所有的內容都是基於記憶體位址來說的。可變資料型別 變數引用的資料型別,在更改數值的時候,存在不開闢新記憶體 的行為,此資料型別為可變資料型別。不可變資料型別 變數引用的資料型別,在更改數值的時候,不存在不開闢新記憶體 的行為,此資料型別為不可變資料型別。在 python 中,strings,tu...

python之可變資料型別與不可變資料型別

可變資料型別與不可變資料型別的區別 當不同的兩個變數賦值相同時,變數位址不相同的為可變資料型別,反之為不可變資料型別 不可變資料型別有哪些 number 數字 string 字串 tuple 元組 可變資料型別有哪些 set 集合 list 列表 dictionary 字典 使用 is 運算子判斷資...

python中不可變資料型別和可變資料型別

在學習python過程中我們一定會遇到不可變資料型別和可變資料型別。以下所有的內容都是基於記憶體位址來說的。在python中資料型別有 整型,字串,元組,集合,列表,字典。接下來我們用例子來一一檢視他們分別屬於不可變資料型別還是可變資料型別。a 1 print id a type a a 2 pri...