二. 數據類型:序列類型

分爲可變和不可變序列。

序列通用操作(以列表爲例)

生成序列

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

不可變序列

  1. 可包含任意對象的有序集合
  2. 通過下標(位置偏移)索引訪問
  3. 固定長度,異質,可任意嵌套
  4. 對象引用數組

不可變體現在不像列表一樣可追加(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 指定進制顯示

可變序列

  1. 包含任意對象的有序序列
  2. 通過下標索引(位置偏移)訪問
  3. 可變長度,異質,可任意嵌套
  4. 支持原位修改
  5. 對象引用數組

列表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複製序列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章