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
("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倍 按照創業...
請問各位檔案管理的大牛,在檔案整理的工作中有沒有什麼技巧傳授?
田小姐 檔案如何規範管理,無外乎從文件梳理 分類 歸檔 儲存 分享幾個角度來實現 針對不同的文件,有不同使用許可權,具體結合整體的思路完成整體的內容的完善 關於文件歸檔的許可權有很細節的區分 細密的許可權設定,靈活的許可權組合,可根據崗位 部門以及人員的不同分配許可權,系統支援目錄許可權設定及單檔案...