Python 語言基礎(三)之列表,元組
一、列表
1.概述:
通過前兩天的學習,我們知道變量可以存儲數據,但是一個變量只能存儲一個數據,現在有一個班級,班級有20個人,現在求班級的平均年齡。
本質:list列表的本質是一種有序的集合
2.創建列表
語法:列表=[元素1,元素2,元素3……]說明:列表中的選項被稱為元素,跟string類似,下標也是從0開始計數
#創建空列表 list1 = [] #創建帶有元素的列表 list2 = [10, 20, 30, 10] print(list2)
在列表中元素的數據類型可以不同(靈活性)
list3 = [33, "good", True, 10.32] print(list3)
3.列表元素的訪問
列表的取值
功能:訪問list列表中元素值
語法:列表名[索引]
list4 = [22, 33, 12, 32, 45] #下標從0開始,最大值為len(list4)-1 print(list4[0])
註意:當索引值大於len(list4)-1的時候,會出現錯誤
列表元素的替換
功能:更改列表元素的值
語法:列表[下標] = 值
list4 = [22, 33, 12, 32, 45] list4[0] = "hello" print(list4[0])
4.列表操作
列表的組合
語法:列表3 = 列表1 + 列表2
list1 = [1, 2, 3] list2 = [‘hello‘, ‘yes‘, ‘no‘] list3 = list1 + list2 print(list3)
列表的重復
語法:列表 = 列表1*n
若存在則返回True,否則返回False
list1 = [1, 2, 3] print(1 in list1)
列表截取
語法:列表[start:end]表示獲取從開始下標到結束下標的所有元素,包含start不包含end
list1 = [1, 2, 3, ‘hello‘, ‘yes‘, ‘no‘] print(list1[2:4]) #若不指定start,則默認從0開始截取,截取到指定位置 #若不指定end,則從指定位置開始截取,截取到末尾結束
二維列表
語法:列表 = [列表1,列表2,列表3,……,列表n]
#創建二維列表,即列表中的元素還是列表 list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
二維列表取值
語法:列表名【下標1】【下標2】
註意:下標1代表第n個列表(下標從0 開始,下標2代表第n個列表中的第n個元素)
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]] print(list1[0][0])
5.列表的方法
list.append(元素/列表)
功能:在列表中末尾添加新的元素【在原本的列表中追加元素】
註意;append()中的值可以是列表也可以是普通元素
>>> list1 = [3, 4, 6] >>> list1.append(6) >>> print(list1) [3, 4, 6, 6]
list.extend(列表)
功能:在列表的末尾一次性追加另外一個列表中的多個值
註意:extend()中的值只能是列表/元組【一個可叠代對象】,不能是元素
>>> list1 = [1,2,3] >>> list2 = [3, 4,5] >>> list1.extend(list2) >>> print(list1) [1, 2, 3, 3, 4, 5]
list.insert(下標值,元素\列表)
功能:在下標處插入元素,不覆蓋原本的數據,原數據向後順延
註意:插入的數據可以是元素也可以為列表
>>> list1 = [1,2,3] >>> list1.insert(1,0) >>> print(list1) [1, 0, 2, 3] >>> list1.insert(1,[2, 4, 8]) >>> print(list1) [1, [2, 4, 8], 0, 2, 3]
list.pop(下標值)
功能:移除列表中指定下標處的元素(默認移除最後一個元素),並返回移除的數據
>>> list1 = [1, [2, 4, 8], 0, 2, 3] >>> list1.pop() 3 >>> print(list1) [1, [2, 4, 8], 0, 2] >>> list1.pop(2) 0 >>> print(list1) [1, [2, 4, 8], 2]
list.remove(元素)
功能:移除列表中的某個元素第一個匹配結果
>>> list1 = [1, 2, 3] >>> list1.remove(2) >>> print(list1) [1, 3]
list.clear()
功能:清除列表中所有的數據
>>> list1 = [1, 2, 3] >>> list1.clear() >>> print(list1) []
list.index(下標[,start][,stop])
功能:從指定的範圍的列表中找出某一個第一匹配的索引值
若不指定範圍,則默認是整個列表
>>> list1 = [1, 2, 3] >>> list1.index(2) 1 >>> list1.index(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 4 is not in list
註意:若在列表中找不到這個元素,則會報錯
list.count(元素)
功能:查看元素在列表中出現的次數
>>> list1 = [1, 2, 3, 1] >>> list1.count(1) 2
len(list)
功能:獲取元素列表個數
>>> list1 = [1, 2, 3, 1] >>> len(list1) 4
max(list)
語法:獲取列表中的最大值
>>> list1 = [1, 2, 3, 1] >>> max(list1) 3
min(list)
語法:獲取列表中的最小值
>>> list1 = [1, 2, 3, 1] >>> min(list1) 1
list.reverse()
語法:列表倒序
>>> list1 = [1, 2, 3, 1] >>> list1.reverse() >>> print(list1) [1, 3, 2, 1]
list.sort()
語法:列表排序 默認升序
>>> list1 = [1, 2, 3, 1] >>> list1.sort() >>> print(list1) [1, 1, 2, 3]
淺拷貝
語法:list1 = [1, 2, 3, 4]
list2 = list1
深拷貝:
語法:list1 = [1, 2, 3, 4]
list2 = list1.copy()
其中深拷貝為內存拷貝,開辟了新的內存空間
list(元組)
功能:將元組轉為列表
>>> list1 = list((1, 2, 3, 4)) >>> print(list1) [1, 2, 3, 4]
列表的遍歷
使用for循環遍歷列表
語法:
for 變量名 in列表
語法
功能:for循環主要用於遍歷列表
遍歷指的是依次訪問列表中的每個元素,獲取每個下標對應的元素值
說明:按照順序獲取列表中的每個元素,賦值給變量名,再執行語句,如此循往復,直到取完列表中所有的為止
>>> list1 = [‘hello‘, 78, ‘你好‘, ‘good‘] >>> for item in list1: ... print(item) ... hello 78 你好 good
同時遍歷下標與元素
語法:
for 下標,變量 in enumerate(列表)
語句
>>> list1 = [‘hello‘, 78, ‘你好‘, ‘good‘] >>> for index,item in enumerate(list1): ... print(index, item) ... 0 hello 1 78 2 你好 3 good
enumerate()[枚舉]函數用於一個可遍歷的數據對象(如列表,元組或者字符串)組合為一個索引序列,同時列出數據與數據下標,一般使用在for循環中 enumerate(obj, [start =0]) obj:一個可叠代對象 start:下標起始位置
6.元組(tuple)
概述:
本質上是一種有序集合,和列表非常的相似,列表使[]表示,元組使用()表示
特點:一旦初始化,就不能發生改變
元組的創建:
格式
元組名 = (元素1,元素2,元素3,……)
#創建空的元組 tuple1 = () print(tuple1) #創建帶有元素的元組 tuple2 =(22, 33, 14, 109) print(tuple2) #與列表類似,元組中的元素類型可以不同 tuple3 = (23,True,"good") print(tuple3) #定義只有一個元素的元組 tuple4 = (1) #這定義的不是元組而是整數1 tuple4 = (1,) #定義一個元素的元組定義時必須加一個逗號",",用來消除歧義
元組元素的訪問
訪問元組中的元素:
格式:元組名[下標]
tuple1 = (20, 40, 201, 401) print(tuple1[0]) #註意使用下標取值的時候,要註意下標的取值範圍,不要下標越界 #獲取最後一個元素 print(tuple1[-1])
修改元組
在元組定義的時候大家都知道元組一旦初始化就不能改變,但是現在如果我想改變元組怎麽辦?
元組是不能修改的,但是列表可以,元組中的元組的數據類型可以是不同類型的,因此我們可以通過元組中添加一個列表,而列表是可以修改的,進而來“修改”我們的元組
tuple1 = (‘hello‘, ‘you‘,[20, 30]) #修改元組 tuple1[0] = ‘hi‘ #報錯,元組不能修改 tuple1[2][1] = ‘good‘
註意:從表面上看我們的元組確實是改變了,但其實改變的不是我們的元組,而是我們list的元素,所謂tuple不變是說,tuple的每個元素的指向永遠不變,一旦它指向了這個list,就不能改變指向其他的對象,但是指向的list本身是可變的!
刪除元組
元組是不可變的,但是我們可以使用del語句刪除整個元組
tuple1 = (‘hello‘, ‘hi‘) del tuple1 print(tuple1) #此時會報錯
元組操作
元組連組合
語法:
元組1 元組2
元組3 = 元組1 + 元組2
tuple1 = (1, 2, 3) tuple2 = (4, 5, 6) print(tuple1 + tuple2) #結果 (1, 2, 3, 4, 5, 6)
註意:元素連接組合並沒有改變原來的元組,而是成了新的元組
元組的重復
語法:
元組2 = 元組1 * n
tuple1 = (1, 2, 3) tuple2 = tuple1 * 3 print(tuple2) #結果 (1, 2, 3, 1, 2, 3, 1, 2, 3)
判斷元素是否在元組中
語法:
元素 in 元組
若存在則返回True,否則返回False
tuple1 = (1, 2, 3) print( 1 in tuple1) #結果 True tuple1 = (1, 2, 3) print( 5 in tuple1) #結果 False
元組的截取
語法:
元組名[start:end]
截取範圍【start,end)
功能:獲取開始下標到結束下標之前的所有元素。
若不指定start則默認是從頭開始截取到指定位置。
若不指定end則默認從指定位置截取到結尾
tuple1 = (1, 2, 3, 8, ‘hello‘, ‘good‘) tuple2 = tuple1[2:5] print(tuple2) #結果 (3, 8, ‘hello‘) tuple1 = (1, 2, 3, 8, ‘hello‘, ‘good‘) tuple2 = tuple1[:5] print(tuple2) #結果 (1, 2, 3, 8, ‘hello‘)
7.元組的方法
len(tuple)
功能:獲取元組元素的個數
tuple1 = (1, 2, 3, 8, ‘hello‘, ‘good‘) print(len(tuple1)) #結果 6
max(tuple)
功能:獲取元組中元素的最大值
tuple1 = (1, 2, 3, 8, 20, 13) print(max(tuple1)) #結果 20
min(tuple)
功能:獲取元組中元素的最大值
tuple1 = (1, 2, 3, 8, 20, 13) print(min(tuple1)) #結果 1
tuple(list)
功能:將列表轉換為元組
list1 = [1, 2, 3, 8, 20, 13] print(tuple(list1)) #結果 (1, 2, 3, 8, 20, 13)
1.使用for循環打印圖形 ‘‘‘ * ** *** **** ***** ‘‘‘ 2.寫一個雙色球彩票系統,系統可以隨機產生一組數據,一組彩票數據有六位數,這六位數的的取值範圍是0和1。 一張彩票是兩塊錢,可以設置用戶的金額,用戶可以選擇繼續買票或者是退出。買票和退出的時候要求打印剩余金額。 用戶輸入猜測的數據,若是猜對,則打印”恭喜你中大獎了“,若沒猜中則打印”繼續加油!“。
Python 語言基礎(三)之列表,元組