分爲可變和不可變序列。
序列通用操作(以列表爲例)
生成序列
list(‘abcd’) -> [‘a’,’b’,’c’,’d’]
list(range(5)) -> [0,1,2,3,4]
判斷元素是否包含
a = [1,2,3,4,’a’,’b’]
1 in a -> True
2 not in a -> False
連接序列
a = [1,2]
b = [4,5]
a + b -> [1,2,4,5]:a,b本身沒有改變
重複元素
[3] * 4 -> [3,3,3,3]
訪問元素
a = [1,2,3,4,5]
a[0] -> 1
a[-1] -> 3
a[0:2] -> [1,2]
a[:3] - > [1,2,3]
a[3:] -> [4,5]
a[:] -> [1,2,3,4,5]
按步長訪問
a = [1,2,3,4,5]
a[::2] -> [1,3,5]
獲取序列長度
a = [1,2,3,4,5]
len(a) -> 5
最小/最大/和
a = [1,2,3,4,5]
min(a) -> 1 全局函數
max(a) -> 5
sum(a) -> 15
檢索元素第一次出現的位置下標
a = [1,2,3,4,5]
a.index(2) -> 1 方法
統計元素出現次數
a = [1,2,3,4,5]
a.count(2) -> 1
不可變序列
- 可包含任意對象的有序集合
- 通過下標(位置偏移)索引訪問
- 固定長度,異質,可任意嵌套
- 對象引用數組
不可變體現在不像列表一樣可追加(extend),擴展元素(append),原位改變。
元組tuple
聲明
t=(1,2,3,’1’)
t=1,2,3,’1’:簡便寫法
t=1,
只有一個元素時末尾“,”要加上如:t = (1,),否則被當做基本類型處理。
t = tuple(range(2,4)) -> (2,8)
t[1] -> 3
t[0:2] -> (2,3)
常用操作
t1=(1,)
t2=(2,)
t = t1 + t2 -> (1,2)
t = t1 * 3 -> (1,1,1)
簡單賦值/交換
a,b = 1,2 : a -> 1,b -> 2 利用tuple的語法同時給a和b賦值
a,b = b,a 交換a和b的值
range
type(range(5)) -> <class ‘range’>
range(1,21,2) 步長值爲2
字符串str
可用單引號或雙引號
三引號換行將用 \n 自動替代
str = r’c:\ca\ccc\tt.txt’ 字符串前加 r(raw) 表示後續字符串中的 \ 不做轉義字符。
str = b’abc123’ 字符串前加b表示用asci字節碼錶示(字節)(或十六進制)
str=’a’ ‘b’ -> ‘ab’ 空格會被忽略
內置方法
支持序列的通用操作
s = ‘abcd123’
‘3’+str(4) -> ‘34’
s1 = s.replace(‘a’,’b’) -> ‘bbcd123’
s2=s.replace(‘b’,’f’,1) -> ‘afcd123只替換前一個
s2.capitalize() 單詞第一個字母大寫
su = s2.upper() 變爲大寫
sl = s2.lower() 變爲小寫
s2.startswith(‘a’)
s2.endswith(‘a’)
s2.isnumeric() 是否爲數字
s2.isalpha() 是否爲字母
l = s2.split(‘a’) 拆分,無參時將整體作爲列表的一個元素
‘:’.join([‘a’,’b’,’c’]) -> ‘a🅱️c’ 連接
>>> a = 'a'
>>> b = 'b'
>>> c = 12
>>> 'A:{0},B:{1},C:{2},DA:{0}'.format(a,b,c) 字符串拼接,參數順序的情況下 {} 中的下標可取消
'A:a,B:b,C:12,DA:a'
>>> 'A:{0},B:{1},C:{2},DA:{0},{depo}'.format(a,b,c,depo='depo1') depo變量要在參數中指定
'A:a,B:b,C:12,DA:depo1'
>>> '{0:10}={1:8}'.format('10個字符','22.33')
'10個字符 =22.33 ' 默認字符左對齊,數字右對齊
>>> '{0:>10}={1:<8}'.format('10個字符','22.33')
' 10個字符=22.33 ' 指定對齊方式
print(’{:f},{:.2f},{:06.2f}’.format(3.1415926,3.1415926,3.1415926))
3.141593,3.14,003.14
:06.2f 總位數爲6,浮點數形式,小數點後顯示2位,位數不足前面補0
print(’{:X},{😮},{:b}’.format(32,32,32))
20,40,100000 指定進制顯示
可變序列
- 包含任意對象的有序序列
- 通過下標索引(位置偏移)訪問
- 可變長度,異質,可任意嵌套
- 支持原位修改
- 對象引用數組
列表list
聲明
scores = [23,4,24,56.3]
scores[0] -> 23 :下標索引訪問,從0開始
scores[-1] -> 56.3
scores[0:2] -> [23,4]:範圍訪問:含頭不含尾
scores.append(78):追加到最後
scores.append([2,33,’a’]):任意嵌套
scores[0] = 3:原位改變
常用操作
a = [1,5,4,2]
排序
數值型:a.sort() -> [1,2,4,5]
自定義:c = [‘aa’,’vv’,’ff’]
c.sort(key=lambda x:x[-1])
函數:sorted(c,key=lambad n:n[1])
a = list(range(1,11)) -> [1,2,3,4,5,6,7,8,9,10]
改變指定範圍的值
a[i:j] = t,t必須可迭代,當len(t) > j – i 時,t將插入,當len(t) < j-i 時替換並將長度不夠的位置刪除,len(t) = 1時將前j-i替換爲t[0]
a[:3] = [11,22,33] -> [11,22,33,4,5,6,7,8,9,10]
a[0:3] = [11,22] -> [11,22,4,5,6,7,8,9,10]
a[:3] = [11] -> [11,11,11,4,5,6,7,8,9,10]
a[i:j:k] = t,加步長時替換的新值的數目要匹配
a[:6:2] = [0,0,0] -> [0,2,0,4,0,6,7,8,9,10]
a[:6:2] = [1] X錯誤
根據索引刪除
del a[0]:刪除列表a的第一個元素
del a[::2]
del a[3:6]
a[:2] = [] 等同於 del a[:2]
方法刪除
a.remove(1) 刪除第一個匹配的值
清空序列
a.clear()
a = [1,2,3]
追加序列
a.append(78) -> [1,2,3,78]:追加到最後
a.append([1,2]) -> [1,2,3,[1,2]]
擴展元素
a.extend([1,2]) -> [1,2,3,1,2]
插入元素
a.insert(0,99) -> [99,1,2,3]
a[0:0] = [99] -> [99,1,2,3]
彈出並刪除值
a.pop() -> 3 [1,2]
a.pop(1) -> 2 [1,3]
反轉序列
a.reverse() [3,2,1] :影響實際序列
複製序列
l = a l is a -> True共享引用
l = a[:] l is a -> False複製序列
l = a.copy() l is a -> False複製序列