集合類型及操作 集合元素之間無序,集合元素不可更改。 創建 set("pypy123") {'1', '3', 'p', 'y', '2'} 空集合不能用{}生成,留個字典了, 用set() 關係操作 交 & 並 | 差 - 補^ 支持(&=, |=, -=, ^=) 關係操作符 <,<=,>,>= ...
集合類型及操作
集合元素之間無序,集合元素不可更改。
創建
set("pypy123")
{'1', '3', 'p', 'y', '2'} 空集合不能用{}生成,留個字典了, 用set()
關係操作
交 & 並 | 差 - 補^ 支持(&=, |=, -=, ^=)
關係操作符 <,<=,>,>= 判斷子集關係或包含關係
>>> A = {'p','y',123} >>> B = set("pypy123") >>> A-B {123} >>> B-A {'1', '3', '2'} >>> A&B {'y', 'p'} >>> A|B {'1', '3', 'p', 'y', '2', 123} >>> A^B {'1', '3', '2', 123} >>>
方法:
S.add(x)
S.discard(x) #不報錯
S.remove(x) #沒有會報錯
S.clear()
S.pop() #隨機 pop一個,沒有產生異常
S.copy()
Len(S)
x in S / x not in S
集合應用場景:
關係判斷
數據去重:集合類型所有數據無重覆
>>> listA = [1,3,2,4,2,1,1,2] >>> setTemp = set(listA) >>> listA = list(setTemp) >>> listA [1, 2, 3, 4]
序列類型及操作
序列是一維元素的向量。
序列類型是基類類型 (元組,列表,字元串)由序列類型衍生
處理函數:
x in S / x not in S
S + t
S *n或n*S
S[i]
s[i:j]或s[i:j:k] #切片
通用函數:
len(s)
min(s) #需要可比
max(s) #需要可比
方法:
s.index(x)或 s.index(x,i,j) #從i到j第一次出現的位置
s.count(x) #x出現總次數
元組類型
元組是序列類型的一種擴展。
不可變類型
定義
()或 tuple()
單個元組 (1,) 要加逗號,區分與基本類型
可以使用小括弧或者不適用小括弧
example:
def func():
return 1,2
1,2就是一個元組
操作:
繼承序列的操作
無特殊操作
列表類型
可變類型
定義
[]或list()
列表中各元素類型可以不同,無長度限制
ex:
>>> ls = ['pig','fish',999] >>> ls ['pig', 'fish', 999] >>> lt = ls >>> lt ['pig', 'fish', 999]
方括弧[]和list真正創建一個列表,賦值操作僅傳遞引用()淺拷貝
操作:
ls[i] = x
ls[i:j:k] = lt #用lt替換ls切片後所對應元素子列表
del ls[i]
del ls[i:j:k]
ls += lt
ls *= n #使元素重覆n遍
方法:
ls.append(x) #後面增加一個元素
ls.clear()
ls.copy() #創建一個新的,深拷貝
ls.insert(i, x) #在ls第i個元素前增加元素x
ls.pop(i) #取出並刪除第i位置元素
ls.remove(x) #將ls中出現的第一個元素x刪除
ls.reverse() #反轉
extend()和append()的區別:
append(x)只向列表增加一個元素,如果x為列表,則列表x作為一個元素,不會拆分
extend(seq)參數seq 是元素序列,會將元素拆分依次加到後面
>>> ls = list(range(1,5)) >>> ls [1, 2, 3, 4] >>> ls.append(1) >>> ls [1, 2, 3, 4, 1] >>> ls.append(1,2,3) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: append() takes exactly one argument (3 given) >>> ls.append([1,2,3]) >>> ls [1, 2, 3, 4, 1, [1, 2, 3]] >>> ls.append((1,2,3)) >>> ls [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3)] >>> ls.append({a:1,b:2}) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined >>> ls.append({'a':1,'b':2}) >>> ls [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}] >>> ls.extend(range(5,8)) >>> ls [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7] >>> ls.extend((1,2,3)) >>> ls [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7, 1, 2, 3] >>> ls.extend({'c':3,'d':4}) >>> ls [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7, 1, 2, 3, 'c', 'd']
序列應用場景
數據表示
元組用於元素不改變的場景,多用於固定搭配,數據保護 (const)
字典類型
鍵值對 索引->數據
字典是鍵值對的集合,鍵值對之間無序
定義
{}或dict() 鍵值間用:分割
操作和方法:
del d[k]
k in d
d.keys() #返回所有鍵 返回類型可以便利,但不能當列表操作
d.values() #返回所有值
d.items() #返回所有鍵值對信息
d.get(k,<default>) #鍵k存在,返回對應值,不存在返回<default>值
d.pop(k,<default>) #鍵k存在,取出對應值,不存在返回<default>值
d.popitem() #隨機取出一個鍵值對,以元組的形式反回
d.clear()
len(d)
應用場景
表達鍵值對數據,進而操作
元素遍歷
for k in d: