- 串列的初識
-
why:int bool str
- str: 存盤少量的資料,
- str:切片還是對其進行任何操作,獲取的內容全都是str型別,存盤的資料單一,
-
what:list
- list = [66, 'im',True,[1, 2, ‘False’]] 承載任意資料型別,存盤大量的資料,
- python常用的容器型資料型別,list 串列,其他語言:Java: 陣列,
- 串列是有序的,可索引,切片(步長),
-
串列可以儲存python中的任何物件:整數、浮點數、字串、函式、布林值、串列、元祖、字典等;
-
串列中的元素是有序且可變的;
- 索引,切片,步長,**
li = [100, '我和你', True, [1, 2, 3]]# 索引
print(li[0], type(li[0]))
print(li[1],type(li[1]))
print(li[-1])
print(li[:2])# 切片 (顧頭不顧尾)
>>>100 <class 'int'>
我和你 <class 'str'>
[1, 2, 3]
[100, '我和你']
相關練習題:
li = [1, 3, 2, "a", 4, "b", 5,"c"]
通過對li串列的切片形成新的串列l1,l1 = [1,3,2]
通過對li串列的切片形成新的串列l2,l2 = ["a",4,"b"]
通過對li串列的切片形成新的串列l4,l4 = [3,"a","b"]
通過對li串列的切片形成新的串列l6,l6 = ["b","a",3]
-
串列的增刪改查
\1. 在串列末尾增加一個資料項(list.append()方法),沒有回傳值,與list.pop()對比,
list1 = ['a','b',1,2] print(list1.append('c')) >>>None list1.append('c') print(list1) >>>['a','b',1,2,'c'] #注意變數只是指向某種資料 list1 = ['a','b',1,2] li1 = list1.append('c') #li1只是一個方法動作 li2 = list1 print(li2) print(li1) list1.append(11) print(li2) >>> ['a', 'b', 1, 2, 'c'] None ['a', 'b', 1, 2, 'c', 11] #li2指向的資料增加了元素11 #兩者對比,變數只是指向某種資料,并不是資料本身, a = 1 b = a a = 2 print(b) >>>1\2. 在串列末尾增加一個資料項集合( 添加多個元素的方法,迭代追加)(list.extend()方法);
l1 = [1,2] l1.extend('abcd') print(l1) >>>[1, 2, 'a', 'b', 'c', 'd'] l2 = [1,2] l2.extend(['asd',1,2]) print(l2) >>>[1, 2, 'asd', 1, 2]\3. 串列的特殊插入法,;在特定位置增加一個資料項(list.insert()方法):
a=['b','c','d'] a.insert(0,'a') a[0:1] >>>['a']\4. 從串列末尾洗掉資料,按照索引洗掉(list.pop()方法),若果沒有給出索引值則默認洗掉最后串列的一個元素,有回傳值,回傳洗掉的元素,與list.append()對比;
l1 = [1,2,3,4] l1.pop() print(l1) >>>[1,2,3] print(l1.pop(0)) >>>1\5 . 在串列中洗掉一個特定項(list.remove()方法);如果有重復的則默認洗掉第一個元素(從左開始)
l1 = [1,2,3,3] l1.remove(3) print(l1) >>>[1, 2, 3]\6. list.clear()清空串列的方法,del 按照索引洗掉,也可以按照切片洗掉(可加步長),無回傳值
l1 = [1,2,3,4,5,6] del l1[0] print(l1) >>>[2.3.4,5,6] del l1[0:4:2] print(l1) >>>[3,5,6] l1.clear() print(l1) >>>[]\7. 按照索引改元素;按照切片更改元素(迭代增加),也可按照切片加步長更改,但必須一 一 對應,
l1 = [1,2,3,4] l1[0] = 0 print(l1) >>>[0,2,3,4] l1[1:] = 'abcd' print(l1) >>>[0, 'a', 'b', 'c', 'd'] l1[::2]='123' print(l1) >>>['1', 'a', '2', 'c', '3']\8. b=sorted(a,reverse=True) 函式按照長短、大小、英文字母的順序給串列中的元素進行排序,但不會改變串列本身
l1 = ['c','b','a'] l2 = sorted(l1) print(l2) >>>['a', 'b', 'c'] print(l1) >>>['c', 'b', 'a'] print(sorted(l1,reverse=False)) >>>['a', 'b', 'c']\9. 在整理串列時,如果需要兩個串列,可用zip函式:
for a , b in zip(list1,list2)
l1 = [1,2,3] l2 =['a','b'] for x,y in zip(l1,l2): print(x,y) >>>1 a 2 b\10. 推導式(串列的決議式:不僅方便,并且在執行的效率上更好)
有許多元素要裝進串列中:list = [i for i in range(1,11)] ,(range(): 類似于串列,自定制數字范圍的數字串列,可索引,也可切片),List = [item1 for item2 in iterable]
l1 = [i for i in range(1,11,1)] #步長可正可負,步長為1時可省略即為range(1,11) #若從0開始,步長為1則可寫為range(11) print(l1) >>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\11. 串列是有序的,可以用enumerate()函式在索引的時候得到每個元素的具體位置:
for num , str in enumerate(list):
l1 = ['a','b','c'] for num,int in enumerate(l1): print(num,int) >>>0 a 1 b 2 c -
串列的嵌套
l1 = [1, 2, 'woiyou', [1,'woi',2]] # 1, 將l1中的'woiyou'變成大寫并放回原處, l1[2] = l1[2].upper() # 2,給小串列[1,'woheyou',3,]追加一個元素,'山就在那兒', l1[-1].append('山就在那兒') # 3,將串列中的'wohe'通過字串拼接的方式在串列中變成'you' l1[-1][1] += 'you' #l1[-1][1] = l1[-1][1] + 'you' -
元組
-
只讀串列,存大量的資料,可以索引,切片(步長),不可更改,但元祖中串列里的元素可以按照串列更改,示例: (1, True, [1, 2, 3]),
-
元祖的拆包:分別賦值,必須一 一對應,(串列也可以拆包,但一般不用)
a,b = (1,2) print(a,b) >>>1 2 a,b = [1,2] print(a,b) >>>1 2
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/176793.html
標籤:Python
