python基础-02
常見的數據類型
?
列表
?
在python中,列表的創建可以是由[]兩個方括號組成的。在其他語言中,被稱之為數組。
列表里可以存放一組值,并且系統默認的給列表里的每一個元素以索引值,方便查找和使用。
如下:
?
#創建一個列表,并且保存一定的數據user_list = ['劉德華','張學友','張靚穎','郭富城','李白']print(user_list) #['劉德華', '張學友', '張靚穎', '郭富城', '李白']#根據索引值來讀取數據 print(user_list[0])#劉德華我們在實際的應用中,可以非常方便的通過索引值來取出自己想要的值。
此時,如果需要在列表中取出多個連續的值,可以采用下面的寫法:
1 #創建存儲了多個值得列表 2 3 start_list = ['劉德華','張學友','張靚穎','郭富城','李白'] 4 5 #此時,需要取出 張學友到郭富城 6 s_list = start_list[1:4] 7 8 print(s_list) # ['張學友', '張靚穎', '郭富城']?
在上面的代碼中,在取值的時候,我們使用了1:4,索引值從張學友的1到李白的4,但是李白卻沒有被選取到,此時的原則是顧頭不顧尾
而這樣的一種操作,我們稱之為切片
Tip:在進行切片?操作后,并不會改變原本的數組。
那么從左邊開始取值,索引值從0開始,如果從右邊開始取值,索引值從-1開始。
如果需要從右向左取值,有一點需要注意,例如:
#創建存儲了多個值得列表start_list = ['劉德華','張學友','張靚穎','郭富城','李白']想要取值從右向左李白到張靚穎,寫法如下:
n_list = start_list[-3:]print(n_list)從右向左,李白是-1 ,那么將-1省略,要取值到張靚穎,那么張靚穎的索引為-3,那么就寫成[-3:] 。
同理,如果從左向右取值,前面如果是0,也是可以省略的。
?
?
追加
?
如果我們需要給列表里面追加一些元素,可以使用append方法,向列表的最后追加一些元素。
#創建一個列表 user_list = ['宋小寶','趙四','劉能','小沈陽']#向列表中追加元素user_list.append('趙本山')#檢測原列表是否被改變 print(user_list)輸出的結果:
['宋小寶', '趙四', '劉能', '小沈陽', '趙本山']新追加的內容已經被追加到列表的最后。
如果需要將某個元素插入到某個元素之前,可以使用insert方法。
如下:
結果如下:
['宋小寶', '趙本山', '趙四', '劉能', '小沈陽']新的數據已經添加成功。
?
改
?
如果需要修改列表中的某一項,可以直接通過索引值找到元素并且直接賦予新值即可。
如下:
user_list[0] = '二人轉'?
刪除
?
如果需要刪除列表中的元素,可以采用remove ,del 或者pop方式。
remove方法:
#創建一個列表 user_list = ['測試1','測試2','測試3','測試4']#使用remove方式刪除元素 user_list.remove('測試1')print(user_list)del方法:
#創建一個列表 user_list = ['測試1','測試2','測試3','測試4']#使用del 方法刪除 del user_list[1]print(user_list)pop方法:
#創建一個列表 user_list = ['測試1','測試2','測試3','測試4']#使用pop方法刪除 user_list.pop()print(user_list)Tip:上面的pop方法此時沒有傳遞參數,會默認的把列表中最后一個值刪除,當然,pop()方法中同樣接受傳入參數[列表的索引值],所以一旦pop傳入了索引值,那么它的功能效果就等同于del方法。
?
總結
增
使用append方法,insert方法
刪除
使用remove ,del以及pop方法
改
直接使用索引值找到元素并且賦予新值
查
通過索引值的方式可以查詢數據
我們也可以通過index方法來查詢某個元素的在列表中的索引值。
如下:
?
#創建列表 user_list = ['測試1','測試2','測試3']index_user = user_list.index('測試2')print(index_user) # 1在列表中,如果想要查看某個元素出現的次數,可以使用count方法
如下:
#創建列表 user_list = ['測試1','測試2','測試3','測試2','測試3']# 使用count方法統計一個元素在列表中出現的次數 num = user_list.count('測試2') print(num) # 2 表示測試2 出現了兩次清空列表
?
python中清空列表可以使用clear方法
如下:
#創建列表 user_list = ['測試1','測試2','測試3','測試2','測試3'] #使用clear方法清空列表 user_list.clear(); #檢查列表是否被清空 print(user_list) #顯示為[] ,說明列表已經被成功清空了反轉列表
?
python中反轉列表使用reverse方法
如下:
?
#創建列表 user_list = ['測試1','測試2','測試3','測試2','測試3'] #使用reverse方法反轉列表 user_list.reverse() print(user_list)?
排序
python中列表的排序可以使用sort方法
如下:
#創建列表 list = ['2Ceshi2','#Ceshi1','ACeshi3','aCeshi4']list.sort() print(list)結果如下:
['#Ceshi1', '2Ceshi2', 'ACeshi3', 'aCeshi4']那么排序的順序其實是按照ASCII碼的順序進行排序。
?
合并列表
?
python中列表可以進行合并,使用extend方法
如下:
#創建列表 list = ['2Ceshi2','#Ceshi1','ACeshi3','aCeshi4'] #創建第二個列表 test_list = [1,2,3,4] #將第二個列表合并到list列表中 list.extend(test_list)print(list,test_list)?
上述代碼中,test_list 順利的被合并到list中,而原本的test_list列表依然存在。
刪除整個列表
如下:
del 列表的名字復制
python中,實現列表的復制,可以使用copy方法,而copy方法分為深層復制和淺層復制。
先來看下淺層復制:
1 '''2 copy()方法 復制3 4 淺層復制5 6 列表中還可以存在列表,也可以存在其他的數據類型,而淺層復制指的是僅復制第一層,而第二層列表7 中的內容僅復制指向內存地址的指針8 '''9 10 # 創建一個列表 11 test_list = ['alex','LiBai','Zhangxueyou','Zhaosi'] 12 13 test2 = test_list.copy() 14 15 print(test2) #['alex', 'LiBai', 'Zhangxueyou', 'Zhaosi'] 16 17 # 更改第一層列表中的某個元素值 18 test_list[0] = 'hello,world' 19 20 # 檢查是否更改成功 21 print(test_list) # 成功 22 23 #檢查test2是否更改第一個元素 24 print(test2) # 第二個列表沒有更改此時在上面的代碼中,列表test_list第一個值進行了更改,而test2列表復制過來的第一個值則沒有更改。
如果列表test_list中還存在一個列表,在淺層復制的情況下,會出現如下的情況:
# 創建一個列表 - 并且列表中存在二級的列表 test_list = ['alex','LiBai','Zhangxueyou','Zhaosi',['Nihao','yanyan']]test2 = test_list.copy() # 第一個列表已經全部被復制了過來# 更改第一個列表中子集列表的值 test_list[4][0] = ['NIHAO']# 查看test2列表是否更改 print(test2)發現此時test2列表已經更改:
['alex', 'LiBai', 'Zhangxueyou', 'Zhaosi', [['NIHAO'], 'yanyan']]原因是此時的復制是淺層復制,只復制到了第一層,第二層里面的列表并沒有進行復制,只是復制了一個指向內存方向的指針。
深層復制需要引入copy模塊
代碼如下:
import copy# 創建列表 list_user = ['alex','libai','zhaobenshan',['yanyan','yuping']]# 進行深層復制 new_list = copy.deepcopy(list_user)#print(new_list) # 復制成功# 更改第一組列表 list_user[3][0] = "YANYAN"print(list_user) print(new_list)通過引入copy模塊,并且使用deepcopy方法即可實現深層復制
?
循環列表
?
列表的循環使用for..in 即可。
代碼如下:
# 創建列表 test_list = ['alex','libai','shaopengtao','wangmengchan']for i in test_list:print(i) # 循環成功補充:代碼切片
我們在打印列表的時候,可以使用切片的方式,例如
test_list = ['alex','libai','shaopengtao','wangmengchan']有這樣的一個列表,然后現在想將列表0到-1的位置進行切片,
print(0:-1)那么此時如果想要在切片的基礎上進行每兩個選取一個,代碼可以寫成如下:
print(0:-1:2)那么最終實現的效果如下:
['alex', 'shaopengtao']那么在切片的過程中,如果開始或者結束的位置是0或者-1是可以被省略的,所以上面的代碼就變成了如下:
print(::2)結果同樣是不變的。
?
?
知識點補充和總結:
上面我們說到,淺層復制的使用,其實在實際應用的情景下大概有三種方式可以實現淺層復制,例如下面的演示代碼,將演示三種淺層復制的情況:
1 import copy2 # 創建列表3 test_list = ['name',['deposit',100]]4 5 '''6 實現淺層復制的三種寫法:7 8 copy方法9 [:] 10 list 11 ''' 12 ''' 13 # 第一種方式,使用copy.copy 14 new_list = copy.copy(test_list) 15 print(new_list) 16 ''' 17 ''' 18 #第二種方式 19 new_list = test_list[:] 20 print(new_list) 21 ''' 22 23 #第三種方式 24 new_list = list(test_list) 25 print(new_list)?
?
淺層復制的應用
?
例如,夫妻之間有一個共同的銀行賬戶,里面有著共同的財產,其中一個人取錢或者存錢,那么另一放的余額顯示肯定是要更改的。
代碼如下:
# 創建列表,演示夫妻共用一個銀行賬戶的需求money = ['name',['deposit',2000]]# 創建兩個不同的人 libai = money[:] yanyan = money[:]#此時當丈夫libai 取了1000塊 libai[0] = 'LiBai' libai[1][1] = 2000 - 1000yanyan[0] = 'Yanyan'# 此時無論是丈夫libai還是妻子yanyan的銀行存款余額都會變少,因為二人共用一個賬戶 print(libai) print(yanyan)?
說的簡單點,就是通過淺層復制來實現共享賬號,當然,上面的應用只是簡單的舉個例子,在實際中,銀行也不會將數據存儲在列表中。
?
元組(tuple)
?
元組其實類似于列表,也就是存一組數,只不過它一旦創建,便不能再次修改,所以又叫做只讀列表。
元組本身只能切片和查詢但是不能夠更改。
代碼如下:
names = ('Alex','Libai','Jack')在元組這個對象里面,只有兩個方法,一個是count,一個是index。
?
小練習:購物車
?
需求:
?
?
代碼如下:
?
轉載于:https://www.cnblogs.com/yujihaia/p/7468267.html
總結
以上是生活随笔為你收集整理的python基础-02的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到捉了好多鱼是什么意思
- 下一篇: Python程序每日一练习