請問Python的各位大牛們乙個列表的問題?

時間 2021-06-26 15:32:16

1樓:outliers

首先要恭喜你創造了乙個神奇的Python資料結構,乙個無限巢狀的列表!

它的資料展開大致是這樣的,省略號表示還有無限多層:

寫成表示式大致是這樣[1, [1, [1

關於-1下標問題:

我在Python3.6 環境取下標-1是有值的,表示倒數第乙個元素:In[

5]:a=

[1]...:a

.(a)

...:

...:In[

6]:a[

-1]Out[6

]:[1,

[...

]]嘗試列印列表巢狀元素和id:defloop_print

(infinite_list):b

=infinite_list

times=0

while

True

:times

=times+1

print

("id",id

(b),"累計次數"

,times)b

=b[1

]loop_print(a

)感覺可以無限迴圈下去,數秒後終端程式,可以看到已經巢狀幾十萬層,並且所有巢狀元素的id是一樣的,好像自己把自己巢狀了:

至於為什麼形成了乙個無限巢狀的列表,並且沒有報錯,我也沒搞徹底清楚。如果是python的遞迴呼叫,是有次數限制的,我本機試了下,遞迴呼叫大概在996次程式會中斷。初步懷疑是list底層的C語言的實現方法造成的,不知道有沒有大神能從原理上解釋一下。

2樓:BINGO Hong

i你試試a=

[1]a

.(a)

b=[1

]b.(

b[:])

感受感受,有啥區別~

這跟python變數的引用方式有關,深拷貝和淺拷貝。

python變數類似於指標,指向實際的記憶體單元,而記憶體單元中儲存著實際值。 即python 變數更像是指標,而不是資料儲存區域。模擬到上面就是,a是乙個指標,[1]儲存在記憶體中,a指向[1]而已。

python 賦值語句總是建立物件的引用值,而不是複製物件。

Python 的賦值盡發生引用關係。這裡相當於建立了乙個引用自身的結構,所以導致了無限迴圈。模擬到上面就是,出現的[...

]是因為裡面的列表無法完全展開發生無線迴圈,所以用省略號代替。

現在自學python,各位大牛有什麼好的建議嗎?

成熟的娜娜 python已經是乙個國際通用語。對於技術團隊來說,他們的技術更迭能跟上市場的需求,那當然是最好的,也給公司發展起到了很大的作用。但是我覺得你首先得想好你學會python之後想做什麼,如果只是單純的學會python而在實際中不會用的話,那沒用。企業更希望的是你能用工具用思維方式幫助他們解...

各位大牛大神們,現在有個問題十分迫切的想問大家,用什麼方法可以最快時間讓40萬的本金變成100萬?!?

末席投機者 都在冷嘲熱諷,知乎的氛圍就這?我是有過親身經歷的,短時間40W邊100W不是沒可能。不吹不黑的講,做投資這麼多年,翻個倍還是很常見的啊。不過要說短期,那基本只有乙個辦法,且百試百靈!以上純屬胡扯,正兒八經的方法 睡一覺,做個夢,夢裡啥都有,100萬算啥?40 100 要2.5倍 按照創業...

請問各位檔案管理的大牛,在檔案整理的工作中有沒有什麼技巧傳授?

田小姐 檔案如何規範管理,無外乎從文件梳理 分類 歸檔 儲存 分享幾個角度來實現 針對不同的文件,有不同使用許可權,具體結合整體的思路完成整體的內容的完善 關於文件歸檔的許可權有很細節的區分 細密的許可權設定,靈活的許可權組合,可根據崗位 部門以及人員的不同分配許可權,系統支援目錄許可權設定及單檔案...