day3 python可變的型別 不可變的型別

2022-08-31 06:24:12 字數 3395 閱讀 9261

1   a=1

2 b=a

3 print('之前的:',b)

4 a=2

5 print('之後的:',b)

為什麼會b=a a改變了值,之後b還是等於之前的值呢?

其實這個位置儲存的不是變數a,而是變數a的記憶體位址,a改變了值,變成了另乙個記憶體位址,但是b儲存的是a之前的記憶體位址,所以輸出的時候就不會改變。

查詢記憶體位址使用id()

我們可以看到之前的a、b的記憶體位址是相同的,但是在a改變了值之後,a的記憶體位址就改變了,但是b儲存的是之前的a的記憶體位址,所以b的記憶體位址沒有改變。

2、元組

定義元組:citites=('beijing','shanghai')

定義元組使用小括號() 定義列表使用中括號,中間使用逗號隔開。

元組是不可變的,一旦定義好了之後,就不能再變了。

提示的是型別錯誤,元組物件不支援修改

元組可以使用的內建函式:

1 citites=('beijing','shanghai')

2 print(citites[0]) #查詢該下標元素

3 print(citites.count('beijing')) #查詢該元素出現的次數

4 print(citites.index('beijing')) #查詢該元素下標

3、字串

在python中,字串是不可變型別,即無法直接修改字串的某一位字元。因此改變乙個字串的元素需要新建乙個新的字串。

使用函式replace() 可以修改字串

4、 依次迴圈輸出列表

5、依次迴圈輸出字串的字元

words='紅紅火火恍恍惚惚'

6、切片,list取值的一種方式

切片是顧頭不顧尾

stus=['saki','yuri','sara','kuma']

①stus[1:3] 表示取下標從1開始,到3結束,但不包括下標為3的值,所以只取1和2

②stus[:3] 如果不寫下標的話,表示從下標0開始到3結束,不包含3

③stus[-1] 表示取最後乙個元素

④stus[1:] 不寫結尾下標的話,表示取值到結尾

⑤stus[:] 相當於print(stus),取全部list

⑥import string

num=list(string.digits)  強制型別轉換成list  string.digits表示0-9數字

⑦num[0:11:2]  下標從0開始,到11位不包含11位結束,每個2個元素取一次值,第二個冒號後面的值代表步長。

⑧num[::-1] 步長是負數的話,從右向左取值

⑨num[-6:-10:-1] 步長為負時,是從右向左取值,所以正數是無法取到值的,需要改為負數,-1代表下標為1,-6代表從右往左第6位。

步長為負:  

前面兩個都不寫:則取反;

寫第乙個,第二個不寫:從第乙個向左取;

寫第二個,第乙個不寫:從第二個向左取;

寫兩個:開始位置在結束位置的左側:取不到;

寫兩個:開始位置在結束位置右側:從右往左取。

7、取偶

1  a=[1,1,2,3,4,5,6,43,45,72]

2  for i in a:

3    i%2!=0

4    a.remove(i)

5  print(a)

我們可以看到結果中包含奇數,為什麼會這樣呢?我們可以檢視一下for迴圈每次取的下標和值

i=0時,不滿足條件,刪除,列表改為[1,2,3,4,5,6,43,45,72]

i=1時,取值2,跳過下標為0的1,所以會將值1保留,滿足條件,列表為[1,2,3,4,5,6,43,45,72]

i=2時,取值3,不滿足條件刪除,列表為[1,2,4,5,6,43,45,72]

i=3時,取值5,因為刪除了下標2的值,所以後面的值向前移動乙個下標,所以跳過值4,判斷值5,不滿足條件刪除,列表為[1,2,4,6,43,45,72]

i=4時,取值43,因為刪除了下標3的值,所以後面的值向前移動乙個下標,跳過值6,判斷值43,不滿足條件刪除,列表為[1,2,4,6,45,72]

i=5時,取值72,因為刪除了下標為4的值,所以後面的值向前移動乙個下標,跳過值45,判斷值72,滿足條件,所以保留 最後結果為[1,2,4,6,45,72]

那我們如何解決這個問題呢?

我們可以將a的記憶體位址賦給另乙個變數,我們在b中迴圈下標,但是修改a的值,不會應該迴圈本身,所以我們最後的結果與我們預期的結果一致。

1     a=[1,1,2,3,4,5,6,43,45,72]

2 b=a[:]

3 for i in b:

4   i%2!=0

5   a.remove(i)

6 print(a)

8、不引入第三方變數的方式將a,b的值改變

a,b=1,2

b,a=a,b

Day3 python基礎資料型別

目錄 1 基礎資料型別概覽 2 int 數字型 3 bool 4 str 5 for迴圈 1 int 數字型 主要用於計算 2 str 字串 存少量資料 3 bool 反饋真 假 4 list 列表 可存各種資料型別,操作方便 5 tuple 元組 可讀列表 6 dic 字典 配對鍵值對 7 set...

day3 python 讀寫檔案

1 開啟檔案 open f open haha 開啟乙個名為haha的txt檔案,不寫字尾預設txt檔案,其他型別檔案必須寫字尾 2 read 讀取檔案內容 print f.read 閱讀模式,獲取裡面所有的內容,該模式只能讀取內容,不能對其進行修改。有時候會產生該錯誤,表示gbk解碼時報錯,存在一...

day3 python 集合 檔案

字典是無序的,列表是有序的 a zhangsan print a 1 a 2 222 字串不能賦值集合 set 把不同的元素組成一起形成集合 info 1,2,34,5,6,7 info set info print info 或info 1,2,34,5,6,7 se set info print...