1. 程式人生 > 其它 >Python 學習筆記 基本資料型別內建方法 之 序列型別

Python 學習筆記 基本資料型別內建方法 之 序列型別

基本資料型別:

序列型別: list,tuple,range

優先掌握的操作:

  • 按索引存取值(正向存取+反向存取):即可存也可以取
  • 切片(顧頭不顧尾,步長)
  • 長度
  • 成員運算in和not in
  • 追加
  • 刪除
  • 迴圈

列表 list

作用:按索引位置放置多個值

定義:[ ] 中括號內,每個元素間用逗號隔開

點選收起程式碼
l1 = [1,'a',[1,2]]  # 本質:l1 = list([1,'a',[1,2]])

型別轉換:

但凡能夠被for迴圈遍歷的型別都可以當作引數傳給list()轉成列表型別,list()會跟for迴圈一樣遍歷出資料型別中包含的每一個元素然後放到列表中

list('hello')  #  結果: ['h', 'e', 'l', 'l', 'o']
#  原理 等同與for迴圈
l1 = []
for x in 'hello':
    l1.append(x)   #  結果: ['h', 'e', 'l', 'l', 'o']
# ===================
list({"name":"jason","age":18})  #  結果:['name', 'age']
list((1,2,3))  #  結果:[1, 2, 3] 
list({1,2,3,4})  #  結果:[1, 2, 3, 4]

優先掌握:

1、按索引取值(正向存取+反向存取):即可以取也可以改

(程式碼隱藏)點選檢視程式碼
# 1、按索引取值(正向存取+反向存取):即可以取也可以改
# 例
l = [111, 'egon', 'hello']

# 正向取
res = l[0]  # 111

# 反向取
res = l[-1]  # hello

# 也可以取可以改:索引存在則修改對應的值
# 把l列表索引位置0的元素修改為222
l[0] = 222  # [222, 'egon', 'hello']
# 無論是取值操作還是賦值操作:索引不存在則報錯

2、切片(顧頭不顧尾,步長)

(程式碼隱藏)點選檢視程式碼
# 2、切片
# 【切片】是屬於copy行為 (顧頭不顧尾)索引的擴充套件應用
# 取值前三個
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd']
# 正向取值
x = l[0:3]  # [111, 'egon', 'hello']
# 正向步長取值 步長 (2)
x1 = l[0:5:2]  # [111, 'hello', 'b'] 取索引位置 0 2 4 的值
# 把整個列表倒過來,反向取值
x2 = l[::-1]  # ['d', 'c', 'b', 'a', 'hello', 'egon', 111]
# 把列表切出來賦值給新列表
new_l = l[:]  # 等同於淺拷貝一個列表給新列表new_l
#####################################################

3、長度

(程式碼隱藏)點選檢視程式碼
# 3、長度
# 列表統計 len統計的是元素的個數
X = len([1, 2, 3])  # 3 3個元素
#####################################################

4、成員運算in和not in

(程式碼隱藏)點選檢視程式碼
# 4、成員運算in 和 not in
# 判斷aaa是否存在與列表
if 'aaa' in ['aaa', 1, 2]:
    i = "yes"
else:
    i = "no"
    # 輸出結果 yes
######################################################

5、追加

(程式碼隱藏)點選檢視程式碼
# 5、往列表裡******新增*****值
# 5.1、追加
# (瞭解) append預設在列表最末端追加
# 例
l = [111, 'egon', 'hello']
l.append(1233)  # [111, 'egon', 'hello', 1233]
l.append(4445)  # [111, 'egon', 'hello', 1233, 4445]
#############
# 5.2、插入值
# insert按照指定索引位置插入值
# 例
l = [111, 'egon', 'hello']
l.insert(1, 2222)  # [111, 2222, 'egon', 'hello']
# print(l)
#############

6、新增

(程式碼隱藏)點選檢視程式碼
# # 6、 新增
# # 往列表裡新增子列表
l = [111, 'egon', 'hello']
new_l = [1, 2, 3]
# l.append(new_l)  # [111, 'egon', 'hello', [1, 2, 3]]
# # print(l)
####
# # 把新列表的值新增到現有列表內
# 實現程式碼
for itme in new_l:
    l.append(itme)  # [111, 'egon', 'hello', 1, 2, 3]
# print(l)
#####
# extend實現上述功能(推薦)
l.extend(new_l)  # [111, 'egon', 'hello', 1, 2, 3]
l.extend('abc')  # [111, 'egon', 'hello', 'a', 'b', 'c']
#########################################################

7、刪除

(程式碼隱藏)點選檢視程式碼
# 7、刪除
# 方式一:del通用的刪除方法,只是刪除沒有返回值,不支援賦值語法。
l = [111, 'egon', 'hello']
del l[1]  # [111, 'hello']
######
# # 方式二:.pop是根據索引刪除,會返回刪除的值。
l = [111, 'egon', 'hello']
l.pop()  # [111,'egon'] 預設刪除列表最後一個
l.pop(1)  # [111,'hello']
# res = l.pop(1)  # egon 返回刪除的值
######
# 方式三:.remove()回根據元素刪除,返回None
l = [111, 'egon', 'hello', ['a', 'b', 'c']]
l.remove(['a', 'b', 'c'])  # [111, 'egon', 'hello']
#########################################################

8、迴圈

(程式碼隱藏)點選檢視程式碼
# 8、迴圈
l1 = [1, 'aaa', 'bbb']
for x in l1:  # 把列表迴圈出單個元素輸出
# !!!!!!!!!!需要掌握!!!!!!!!!!!
l = [1, 'aaa', 'bbb', 'aaa', 'aaa']
############################
# 1、l.count() 查詢元素出現次數
res = l.count('aaa')  # 輸出結果 3 表示在l列表裡出現3次
#############
# 2、l.index() 查詢元素索引位置,找不到元素程式就報錯
res = l.index('aaa')  # 輸出結果 1 表示 'aaa' 在列表裡的索引是1
#############
# 3、l.clear()  # 清空整個列表的元素,不能傳入值,填寫傳入值就報錯
l.clear()  # 輸出結果 [] l列表為空,元素全部清楚
#############
# 4、l.reverse()  把列表反轉,不是排序行為
l.reverse()  # 輸出結果 ['aaa', 'aaa', 'bbb', 'aaa', 1] 列表實現反轉
############
# 5、l.sort() 排序 只允許列表內元素為同種資料型別 才可使用此排序
# 預設把元素重小到大排,稱之為升序
l12 = [-1,-4,1,0]
# l12.sort()  # [-4, -1, 0, 1] 把列表升序
l12.sort(reverse=True)  # 輸出結果 [1, 0, -1, -4] 從大到小排序,設定為降序
# 瞭解:字串是可以比大小的,按照對應的位置的字元依次對比
# 字串是按照ASCI碼錶的先後順序區分大小。表內排在的字元越靠後越大。
##############
#瞭解: 列表型別也可以比大小,原理同字元一樣
# 兩個列表對比時,對於索引位置必須為同種資料型別,如果資料型別不同程式會報錯
l2 = [1,'aa','222']
l3 = [2,'dd','123']
print(l2 > l3)  # 結果False
##########################################################

9 、補充

(程式碼隱藏)點選檢視程式碼
# 補充
# 1、佇列:first in first out
# FIFO,先進先出
# 模擬入隊操作
l4 = []
l4.append('first')
l4.append('second')
l4.append('third')
print(l4)
# # 模擬出隊操作
print(l4.pop(0))
print(l4.pop(0))
print(l4.pop(0))
# 輸出結果
# first
# second
# third
############
# 2、堆疊:last in first out
# LIFO 後進先出
# 模擬入棧
l4 = []
l4.append('first')
l4.append('second')
l4.append('third')
####
# 模擬出棧
print(l4.pop())
print(l4.pop())
print(l4.pop())
# 輸出結果
# third
# second
# first