Python數據類型方法整理
一、Python的關鍵要素
1.1 要素1:數據類型
二、數據類型
2.1 標識符與關鍵字
- 由字元(A~Z 和 a~z)、下劃線和數字組成,但不能以數字開頭;
- 不能以python中的關鍵字命名;
-
- 2.1. 不能與Python關鍵字同名
-
- 2.2 不能與Python內置數據類型(如int/float/list/str/tuple)同名
-
- 2.3. 不能與Python內置函數名與異常名作為標識符名
- Python中的標識符中,不能包含空格、@、% 以及 $ 等特殊字元。
- Python 中,標識符中的字母是嚴格區分大小寫的,相同單詞大小格式不同代表意義不同,如:
-
- number = 0
-
- Number = 0
-
- NUMBER = 0
- 變數名命名要有意義,最好見名知意,提高程式碼可讀性
- 推薦使用大小駝峰型(GuessAge或guessAge)和下劃線(guess_age)來命名;
- 常量通常使用大寫來定義
- Python 語言中,以下劃線開頭的標識符有特殊含義,例如:
-
- 以單下劃線開頭的標識符(如 _width),表示不能直接訪問的類屬性,其無法通過 from…import* 的方式導入;
-
- 以雙下劃線開頭的標識符(如__add)表示類的私有成員;
-
- 以雙下劃線作為開頭和結尾的標識符(如 __init__),是專用標識符。
2.2 Integral類型
2.2.1 整數
- 圖:數值型操作與函數
2.3 字元串
2.3.1字元串轉義
2.3.2 字元串運算符
%c | 格式化字元及其ASCII碼 |
%s | 格式化字元串 |
%d | 格式化整數 |
%u | 格式化無符號整型 |
%o | 格式化無符號八進位數 |
%x | 格式化無符號十六進位數 |
%X | 格式化無符號十六進位數(大寫) |
%f | 格式化浮點數字,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 作用同%e,用科學計數法格式化浮點數 |
%g | %f和%e的簡寫 |
%G | %f 和 %E 的簡寫 |
%p | 用十六進位數格式化變數的地址 |
2.3.4 字元串操作方法
- seq = “abcdefg”
- [:] 提取從開頭(默認位置0)到結尾(默認位置-1)的整個字元串
- seq[start]
如: seq[1],取第二個字元「b」
3. [start:] 從start 提取到結尾
如: seq[1:3] 包含上邊界不包含下邊界,因此取值為”bc”
如: seq[1:] 取值從第二個字元至結尾:”bcdefg”
6. seq[start:end:step] 如seq[1:4:2]步長值為2,因此取值”bd”
7. 負索引:-1表示最後一個字元
2.4 元組
2.4.1 元組的內置方法
2.4.2 訪問元組
#!/usr/bin/python3 tup1 = ('Google', 'Runoob', 1997, 2000) print (tup1[0]) print (tup2[1:5])
2.4.3 修改元組
tup1 = (12, 34.56) tup2 = ('abc', 'xyz') # 以下修改元組元素操作是非法的。# tup1[0] = 100 #創建一個新的元組,可進行元組合併 tup3 = tup1 + tup2 print (tup3)
2.4.4 刪除元組
tup = ('Google', 'Runoob', 1997, 2000) del tup
2.4.5 元組運算符
Python 表達式 | 結果 | 描述 |
len((1, 2, 3)) | 3 | 計算元素個數 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 連接 |
(‘Hi!’,) * 4 | (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) | 複製 |
3 in (1, 2, 3) | TRUE | 元素是否存在 |
for x in (1, 2, 3): print (x,) | 1 2 3 | 迭代 |
2.5 列表
2.5.1 列表方法
2.5.2 列表內涵
[expression for item in iterable if condition]
temp=[] for item in iterable: if condition: temp.append(item)
leaps=[] for year in range(1900,1940): if(year%4==0 and year%100!=0)or (year%400==0) leaps.append(year)
leaps=[y for y in range(1900,1940) if(y%4==0 and y%400!=0) or(y%400=0)]
print(sum([i for i in range(1,51)])) print(sum(range(1, 51)))
s = [(x, y, x*y) for x in range(1, 10) for y in range(1,10) if x>=y]
2.6 集合
語法 | 描述 |
s.add(x) | 將數據項x添加到集合s中(如果s中未包含x) |
s.clear() | 清楚集合s中的所有數據項 |
s.pop() | 返回並移除已集合s中一個隨機項,如果s為空集,就會產生KeyError |
s.remove(x) | 從集合s中移除數據項x,如果s中不包含x,就會產生KeyError |
s.discard(x) | 如果數據項x存在於集合s中,就移除該數據項,參見set.remove() |
s.copy() | 返回集合元素的淺拷貝 |
s.difference(t) s-t | 返回一個新集合,其中包含在s中但不在集合t中的所有數據項 |
s.difference_update(t) s-=t | 移除每一個在集合t但不在集合s中的項 |
s.union(t) s|t | 返回新集合,包含s中所有數據項以及在t中不在s中的數據項 |
s.update(t) s|=t | 將集合t中每個s中不包含的數據項添加到集合s中 |
2.6.2 集合內涵
- {expression for item in iterable if condition}
- 我們可以使用上面語法過濾,下面給出一個實例:
- Html = {x for x in files if x.lower().endswith((‘.htm’,’.html’))} 意思是集合html只存放那些以.htm或.html結尾的文件名這裡不區分大小寫
2.7 映射類型
- 2.字典的鍵是不能重複的,獨一無二
- 3.字典是無序的,不能通過索引取切店
語法 | 描述 |
d.clear() | 從dict d中移除所有項 |
d.copy() | 返回dict d的淺拷貝 |
d.fromkeys(s,v) | 返回一個dict,字典的鍵為序列s中的所有項,值為None或v |
d.get(k) | 返回k對應的value,如果k不在字典中返回None |
d.get(k,v) | 返回k對應的value,如果k不在字典中就返回v |
d.items() | 返回dict中所有key,value項 |
d.keys() | 返回dict中的所有key |
d.values() | 返回dict中的所有value |
d.pop(k) | 返回k對應的value,並移除k的項,如果k不存在就產生KeyError |
d.pop(k,v) | 返回k對應的value,並移除k的項,如果k不存在就返回v |
d.popitem() | 返回並移除dict中一個任意的key,value對,如果d為空就產生KeyError |
d.setdefault(k,v) | 與d.get()方法一樣,不同處如果k沒有包含在dict d中就插入一個鍵為k的新項,其值為None或v,可用於賦值 |
d.update(a) | 將a中不包含在b的(key,value)添加到d,如包含則替換 |
os.listdir()返回傳遞給函數的路徑中包含的文件與目錄列表但列表中不會包含"."或".." os.path.getsize()函數返回給定文件的大小(以位元組計數) file_sizes = {name:os.path.getseize(name) for name in os.listdir(".")} file_sizes = {name:os.path.getseize(name) for name in os.listdir(".") if os.path.isfile(name)}
inverted_d = {v:k for k,v in d.items()}