成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

python腳本輸入可變參數(shù) 有哪些用Python語言講算法和數(shù)據(jù)結(jié)構(gòu)的書?

有哪些用Python語言講算法和數(shù)據(jù)結(jié)構(gòu)的書?Python通用數(shù)據(jù)結(jié)構(gòu)全白原理Python中常見的數(shù)據(jù)結(jié)構(gòu)可以統(tǒng)稱為du作為一個容器。有序的zhi列(比如dao列表和元組)、映射(比如字典)和集合是三

有哪些用Python語言講算法和數(shù)據(jù)結(jié)構(gòu)的書?

Python通用數(shù)據(jù)結(jié)構(gòu)全白原理

Python中常見的數(shù)據(jù)結(jié)構(gòu)可以統(tǒng)稱為du作為一個容器。有序的zhi列(比如dao列表和元組)、映射(比如字典)和集合是三種主要的容器類型。

I .序列(列表、元組和字符串)

序列中的每個元素都有自己的編號。Python中有六個內(nèi)置序列。列表和元組是最常見的類型。其他包括字符串、Unicode字符串、緩沖區(qū)對象和xrange對象。下面重點介紹以下列表、元組和字符串。

1.目錄

列表是可變的,這是它區(qū)別于字符串和元組的最重要的特征??傊?,列表可以被修改,但是字符串和元組可以。;t.

(1)、創(chuàng)建

您可以通過以下創(chuàng)建列表:

一個

2

列表1[你好,世界]

打印列表1

列表2[1,2,3]

打印列表2

輸出:

[你好,世界]

[1, 2, 3]

如您所見,該方法與javascript中的數(shù)組非常相似。

(2)列表功能

list函數(shù)(事實上,list是一種類型而不是函數(shù))對于創(chuàng)建字符串列表非常有效:

一個

2

列表3列表(你好)

打印列表3

輸出:

[h,

Python中賦值,淺拷貝,深拷貝都是什么意思?

和很多語言一樣,Python可以分為簡單賦值、淺層復制和深層復制。

在學習的過程中,對淺抄的理解一開始是非常模糊的。但是,經(jīng)過一系列的實驗,我發(fā)現(xiàn)我對這三個概念有了更好的理解。

一.轉(zhuǎn)讓

賦值是這三種操作中最常見的。讓 讓我們通過一些例子來分析賦值操作:

Str案例

代碼如下:: gtgt gt A hellogtgt B hellogtgt C AGT gtt[ID(x)for x in A,B,c] [4404120000,4404120000,4404120000]從上面的指令中,我們可以發(fā)現(xiàn)A,B,C的地址是相同的。所以上面的賦值操作相當于c a b hello。

賦值是指系統(tǒng)先給一個變量或?qū)ο蠓峙鋬?nèi)存(你好這里),然后再給A、B、c分配地址。。所以他們的地址是一樣的。

列表示例

代碼如下::,gtgt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt [ID (x) for x in a,b,c] [403975952,40 Why?

因為str是不可變的,h: gtgt gt A world gtgtgt[ID(x)for x in A,B,c] [4404120432,4404120000,4404120000] gtgt print a,B,c world hello hello此時,A的地址和值發(fā)生了變化,但B,C的地址和值沒有變化。由于str的不變性,A需要重新打開內(nèi)存空間重新賦值,所以A的值發(fā)生變化,A指向的地址也發(fā)生變化。b和C不會因為h: gtgt gt a[0]world gtgtgt[ID(x)for x in a,b,c] [4403975952,4404095096,4403975952] gtgt print a,b,c [world] [world]。由于list的可變性,修改list的值不需要再開辟一個空間,只需要修改原地址的值即可。所以a和c都變了。

了解了以上的區(qū)別,就可以很好的分析淺抄和深抄了。

我們都用list做例子。

第二,淺層復制

代碼如下:: gtgt gt A[你好,[123,234]]gtgt gt B A[:]gtgt t[ID(x)for x in A,b] [4496003656,4496066752]gtgt gt[ID(x)for x in A][4496091584,4495947536]gtgt gt[ID(x)for x in B][449606067536列表是可變的,所以要開辟不同的空間。淺抄是抄嗎?看第5行-

8.我們發(fā)現(xiàn)A和B中元素的地址是相同的。說字符串的h: gtgt gt a[0]worldgtgtgt a[1]。附加(345) gtgt gt打印a,a,

在,b,ba [world,[123,234,345]] b [h: gtgt from copy import deepcopygtgt A[hello,[123,234]]gtgt B deepcopy(A)gtgt[ID(x)for x in A,b] [4496066824,4496066680]gtgt gt[ID(x)for x in A][4496091584,4496067040]gtgt gt[ID(x)for x in B][這是一個完整的副本。

修改a的值后:

復制代碼如下:: gtgt gt a[0]worldgtgtgt a[1]。附加(345) gtgt gt打印a,a,

,B,ba [world,[123,234,345]] b [hello,[123,234]]從第4,5行可以發(fā)現(xiàn),只修改了A,B根本沒有修改。因為B是完整的副本,所以元素地址都和A不一樣,如果A被修改,B不會受到影響。

總結(jié):

1.賦值就是把一個對象的地址賦給一個變量,讓變量指向地址(舊瓶裝新酒)。

2.淺拷貝是在另一個地址創(chuàng)建一個新的變量或容器,但容器中元素的地址都是源對象元素地址的拷貝。即據(jù)說新容器指向舊元素(新瓶裝舊酒)。

3.深度拷貝是在另一個地址創(chuàng)建一個新的變量或容器,同時容器中元素的地址也是新打開的,只是值相同,這是一個完整的拷貝。也就是說(新瓶裝新酒)。