隨筆

python學習過程中的一些隨筆,用於整理一些瑣碎但可能引發一些bug的知識點

一、數組

1.1 在編程中,對於兩個變量進行數值交換常採用的形式爲如下:

a=1,b=2,temp=b,b=a,a=temp

在python中可以將其簡化爲

a,b=b,a

但要注意對於數組,可能造成結果錯誤,如對於下面的程序

a=[1,2,3]
a[0],a[a[0]]=a[a[0]],a[0]

你期望得到的結果過是1,2兩個元素進行換位,但是最終的結果是a=[2,2,1]

原因在於當a[0]=a[1]=2被執行後,第一個逗號後得到的結果爲a[2]而非a[1],因而引發錯誤。

1.2 對於數組如果切片超出索引,那麼返回值爲一個空列表

a=[1,2,3]
print(a[3:])
>>>>>>[]

1.3 數組的深複製與淺複製

a=[[1]*10]*10
a[1][2]=100
print(a)

對於這樣一個數組,預期目標是隻修改第二行第三個數爲100,但實際得到的結果是所有行的第三個數變成了100,原因設計數組的深複製與淺複製的關係。這裏借用博文——圖解python深拷貝與淺拷貝說明如下

對於python列表的乘法而言,如果列表中的元素爲不可變類型,如數字,字符串等,那麼複製能夠正常進行,如:

a=[1]*3
>>>[1,1,1]

但,當列表中的元素爲引用類型時,那麼列表複製執行的爲引用(見上文中的說明),當對其中元素進行修改時,會對所有的元素造成影響,列表內的對象爲字典時也會出現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章