標籤:取值 就是 更新 copy 變數 內容 多少 isa 狀態
前言
1.Python使用物件模型來儲存資料,每一個資料類型都有一個內建的類,每建立一個資料,實際就是一個對象,即所有資料都是對象。
2.對象的3個特性:
- 身份:即記憶體位址,可以用id()來擷取
- 類型:決定了該對象儲存的類型,需要遵循什麼規則,可用type()來擷取該資料類型
- 值:對象的儲存的的真實資料
3.標準的資料類型:
數字、字串、列表、元祖、字典
4.其他類型:
Null、檔案、集合、函數、類、模組
數字
數字類型分為:int()整型、long()長整型、float()浮點型、 complex()複數、bool()布爾值
注意:Python2區分整型,長整型 ; Python3中無長整型一說,都叫整型。
數字類型的轉換:
數字類型的轉換:
int(x, base=None) 將x轉換為一個整數。base為按照多少進位進行轉換
float(x) 將x轉換到一個浮點數。
complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
complex(x, y) 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字運算式。
>>> int(‘101‘,2)5>>> int(‘101‘)101>>> float(‘101‘)101.0>>> complex(3)(3+0j)>>> complex(3,4)(3+4j)
數值運算
加(+)、減(-)、乘(*)、除(/)、取餘(%)、乘方(**):
print(9 / 4) # 返回 2.25print(9 // 4) # 返回 2print(2 ** 3) # 返回 8
注意:數值的除法(/)總是返回一個浮點數,要擷取整數使用(//)操作符。
相關數學函數:
函數 |
傳回值 ( 描述 ) |
abs(x) |
返回數位絕對值,如abs(-10) 返回 10 |
ceil(x) |
返回數位上入整數,如math.ceil(4.1) 返回 5 |
cmp(x, y) |
如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已廢棄 。使用 使用 (x>y)-(x<y) 替換。 |
exp(x) |
返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) |
返回數位絕對值,如math.fabs(-10) 返回10.0 |
floor(x) |
返回數位下舍整數,如math.floor(4.9)返回 4 |
log(x) |
如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) |
返回以10為基數的x的對數,如math.log10(100)返回 2.0 |
max(x1, x2,...) |
返回給定參數的最大值,參數可以為序列。 |
min(x1, x2,...) |
返回給定參數的最小值,參數可以為序列。 |
modf(x) |
返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。 |
pow(x, y) |
x**y 運算後的值。 |
round(x [,n]) |
返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位元。 |
sqrt(x) |
返回數字x的平方根,數字可以為負數,傳回型別為實數,如math.sqrt(4)返回 2+0j |
三角函數:
函數 |
描述 |
acos(x) |
返回x的反餘弦弧度值。 |
asin(x) |
返回x的反正弦弧度值。 |
|
atan(x) |
返回x的反正切弧度值。 |
atan2(y, x) |
返回給定的 X 及 Y 座標值的反正切值。 |
cos(x) |
返回x的弧度的餘弦值。 |
hypot(x, y) |
返回歐幾裡德範數 sqrt(x*x + y*y)。 |
sin(x) |
返回的x弧度的正弦值。 |
tan(x) |
返回x弧度的正切值。 |
degrees(x) |
將弧度轉換為角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) |
將角度轉換為弧度 |
數字常量:
常量 |
描述 |
pi |
數學常量 pi(圓周率,一般以π來表示) |
e |
數學常量 e,e即自然常數(自然常數)。 |
比較運算
運算子 |
描述符 |
樣本 |
== |
檢查,兩個運算元的值是否相等,如果是則條件變為真。 |
(a == b) 不為 true. |
!= |
檢查兩個運算元的值是否相等,如果值不相等,則條件變為真。 |
(a != b) 為 true. |
<> |
檢查兩個運算元的值是否相等,如果值不相等,則條件變為真。 |
(a <> b) 為 true。這個類似於 != 運算子 |
> |
檢查左運算元的值是否大於右運算元的值,如果是,則條件成立。 |
(a > b) 不為 true. |
< |
檢查左運算元的值是否小於右運算元的值,如果是,則條件成立。 |
(a < b) 為 true. |
>= |
檢查左運算元的值是否大於或等於右運算元的值,如果是,則條件成立。 |
(a >= b) 不為 true. |
<= |
檢查左運算元的值是否小於或等於右運算元的值,如果是,則條件成立。 |
(a <= b) 為 true. |
賦值運算
運算子 |
描述符 |
樣本 |
= |
簡單的賦值運算子,賦值從右側運算元左側運算元 |
c = a + b將指定的值 a + b 到 c |
+= |
加法AND賦值操作符,它增加了右運算元左運算元和結果賦給左運算元 |
c += a 相當於 c = c + a |
-= |
減AND賦值操作符,它減去右邊的運算元從左邊運算元,並將結果賦給左運算元 |
c -= a 相當於 c = c - a |
*= |
乘法AND賦值操作符,它乘以右邊的運算元與左運算元,並將結果賦給左運算元 |
c *= a 相當於 c = c * a |
/= |
除法AND賦值操作符,它把左運算元與正確的運算元,並將結果賦給左運算元 |
c /= a 相當於= c / a |
%= |
模量AND賦值操作符,它需要使用兩個運算元的模量和分配結果左運算元 |
c %= a is equivalent to c = c % a |
**= |
指數AND賦值運算子,執行指數(功率)計算操作符和賦值給左運算元 |
c **= a 相當於 c = c ** a |
//= |
地板除,並分配一個值,執行地板除對操作和賦值給左運算元 |
c //= a 相當於 c = c // a |
位元運算
按位元運算符是把數字看作二進位來進行計算的。Python中的按位元運算法則如下:
變數 a 為 60,b 為 13
>>> a = 60 # 60 = 0011 1100>>> b = 13 # 13 = 0000 1101>>> a & b12>>> a ^ b49>>> a | b61>>> ~a-61>>> a << 2240>>> a >> 215
邏輯運算
運算子 |
描述 |
樣本 |
and |
所謂邏輯與運算子。如果兩個運算元都是真的,那麼則條件成立。 |
(a and b) 為 true. |
or |
所謂邏輯OR運算子。如果有兩個運算元都是非零然後再條件變為真。 |
(a or b) 為 true. |
not |
所謂邏輯非運算子。用於反轉運算元的邏輯狀態。如果一個條件為真,則邏輯非運算子將返回false。 |
not(a and b) 為 false.
|
String(字串)
字串:是一個有序的字元的集合,用於儲存和表示的基本的文本資訊。
‘內容‘或 "內容" 中間包含的內容稱為字串
特性:
- 只能存放一個值
- 不可變
- 按照從左至右的順序定義字元集合,下標從0開始順序訪問,有序
字串方法:
序號 |
方法及描述 |
1 |
capitalize() 將字串的第一個字元轉換為大寫 |
2 |
center(width, fillchar) 返回一個指定的寬度 width 置中的字串,fillchar 為填充的字元,預設為空白格。 |
3 |
count(str, beg= 0,end=len(string)) 返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數 |
4 |
bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼返回。 |
5 |
encode(encoding=‘UTF-8‘,errors=‘strict‘) 以 encoding 指定的編碼格式編碼字串,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是‘ignore‘或者‘replace‘ |
6 |
endswith(suffix, beg=0, end=len(string)) 檢查字串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False. |
7 |
expandtabs(tabsize=8) 把字串 string 中的 tab 符號轉為空白格,tab 符號預設的空格數是 8 。 |
8 |
find(str, beg=0 end=len(string)) 檢測 str 是否包含在字串中 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1 |
9 |
index(str, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str不在字串中會報一個異常. |
10 |
isalnum() 如果字串至少有一個字元並且所有字元都是字母或數字則返 回 True,否則返回 False |
11 |
isalpha() 如果字串至少有一個字元並且所有字元都是字母則返回 True, 否則返回 False |
12 |
isdigit() 如果字串只包含數字則返回 True 否則返回 False.. |
13 |
islower() 如果字串中包含至少一個區分大小寫字元,並且所有這些(區分大小寫)字元都是小寫,則返回 True,否則返回 False |
14 |
isnumeric() 如果字串中只包含數字字元,則返回 True,否則返回 False |
15 |
isspace() 如果字串中只包含空格,則返回 True,否則返回 False. |
16 |
istitle() 如果字串是標題化的(見 title())則返回 True,否則返回 False |
17 |
isupper() 如果字串中包含至少一個區分大小寫字元,並且所有這些(區分大小寫)字元都是大寫,則返回 True,否則返回 False |
18 |
join(seq) 以指定字串作為分隔字元,將 seq 中所有的元素(的字串表示)合并為一個新的字串 |
19 |
len(string) 返回字串長度 |
20 |
ljust(width[, fillchar]) 返回一個原字串靠左對齊,並使用 fillchar 填充至長度 width 的新字串,fillchar 預設為空白格。 |
21 |
lower() 轉換字串中所有大寫字元為小寫. |
22 |
lstrip() 截掉字串左邊的空格 |
23 |
maketrans() 建立字元對應表的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字串,表示需要轉換的字元,第二個參數也是字串表示轉換的目標。 |
24 |
max(str) 返回字串 str 中最大的字母。 |
25 |
min(str) 返回字串 str 中最小的字母。 |
26 |
replace(old, new [, max]) 把 將字串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。 |
27 |
rfind(str, beg=0,end=len(string)) 類似於 find()函數,不過是從右邊開始尋找. |
28 |
rindex( str, beg=0, end=len(string)) 類似於 index(),不過是從右邊開始. |
29 |
rjust(width,[, fillchar]) 返回一個原字串靠右對齊,並使用fillchar(預設空格)填充至長度 width 的新字串 |
30 |
rstrip() 刪除字串字串末尾的空格. |
31 |
split(str="", num=string.count(str)) num=string.count(str)) 以 str 為分隔字元截取字串,如果 num 有指定值,則僅截取 num 個子字串 |
32 |
splitlines([keepends]) 按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含分行符號,如果為 True,則保留分行符號。 |
33 |
startswith(str, beg=0,end=len(string)) 檢查字串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查。 |
34 |
strip([chars]) 在字串上執行 lstrip()和 rstrip() |
35 |
swapcase() 將字串中大寫轉換為小寫,小寫轉換為大寫 |
36 |
title() 返回"標題化"的字串,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle()) |
37 |
translate(table, deletechars="") 根據 str 給出的表(包含 256 個字元)轉換 string 的字元, 要過濾掉的字元放到 deletechars 參數中 |
38 |
upper() 轉換字串中的小寫字母為大寫 |
39 |
zfill (width) 返回長度為 width 的字串,原字串靠右對齊,前面填充0 |
40 |
isdecimal() 檢查字串是否只包含十進位字元,如果是返回 true,否則返回 false。 |
name = ‘I\‘am LiChengGuang‘print(name) # 輸出字串,列印:I‘am LiChengGuangprint(len(name)) # 輸出字串長度print(name[0]) # 輸出第 1 個字元print(name[0: - 1]) # 輸出下標第 1 個位置到倒數第 2 位置的所有字元,列印:I‘am LiChengGuanprint(name[5: 15]) # 輸出下標從第 5 個到第 14 個位置的字元,列印:LiChengGuaprint(name[5:]) # 輸出下標從第 5 個起後面所有的字元,列印: LiChengGuanprint(name * 2) # 輸出 2 次字串print(‘Hello,‘ + name) # 字串拼接,列印:Hello,I‘am LiChengGuanprint(‘Li‘ in name) # Trueprint(name.find(‘Li‘)) # 尋找,列印 5,即返回開始的索引值,否則返回-1print(name.index(‘Li‘)) # 尋找,列印 5,即返回開始的索引值,沒有則拋異常print(‘Li‘ not in name) # Falseprint(name.upper()) # 全部轉大寫print(name.lower()) # 全部轉小寫print(name.capitalize()) # 把字串的第一個字元大寫print(name.isspace()) # 是否包含空格print(name.replace(‘Li‘, ‘‘)) # 替換操作print(name.split(‘m‘)) # 分割操作,列印: ["I‘a", ‘ LiChengGuan‘]print(name.strip()) # 去掉字串的左右空格print(name.lstrip()) # 去掉字串的左空格print(name.rstrip()) # 去掉字串的右空格
預留位置
和 Java 一樣,Python 也有預留位置。
%d 表示那個位置是整數;%f 表示浮點數;%s 表示字串。
print(‘Hello,%s‘ % ‘Python‘) print(‘Hello,%d%s%.2f‘ % (666, ‘Python‘, 9.99)) # 列印:Hello,666Python10.00
其中:
1、 % 是轉換開始的標誌;
2、如果不止一個預留位置,要寫在一個圓括弧內,中間用逗號(半形)隔開;
3、%.2f 代表兩位小數,不是兩位會四捨五入。
字串換行
1、三個單引號
Python 三個單引號允許一個字串跨多行,字串中可以包含分行符號、定位字元以及其他特殊字元。
2、三個雙引號
3、\結尾
List(列表)
列表是寫在方括弧 [] 之間、用逗號分隔開的元素列表,列表中元素的類型可以是不相同。如:
s = [100, 100.0, ‘lcg‘, True, ‘I\‘am LiChengGuang‘]
訪問元素
print(s) # 輸出 list,列印:[100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang"]print(len(s)) # 輸出 list 長度print(s[0]) # 輸出 list 第 1 個元素print(s[2:5]) # 輸出 lsit 下標從第 2 個到第 4個元素,列印:[‘lcg‘, True, "I‘am LiChengGuang"]print(s[2:]) # 輸出 lsit 下標從第 2 個起後面所有元素,列印:[‘lcg‘, True, "I‘am LiChengGuang"]
添加元素
s1 = [False]print(s + s1) # [100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] # 在列表末尾一次性追加另一個列表s.extend(s1)print(‘extend 添加 = ‘ + str(s)) # [100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] # append 方法拼接,列表末尾添加新的對象s.append(‘測試拼接‘)print(‘append 方法拼接 = ‘ + str(s)) # [100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False, ‘測試拼接‘] s.insert(0, ‘測試拼接‘) # 指定位置插入元素print(‘insert 插入 = ‘ + str(s)) # [‘測試拼接‘, 100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False, ‘測試拼接‘]
更新元素
s[0] = ‘1024‘print(‘更新元素 = ‘ + str(s)) # 更新元素 = [‘1024‘, 100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False, ‘測試拼接‘]
刪除元素
s.pop() # pop 方法刪除,可指定位置,預設最後一個print(s) # 列印:[‘1024‘, 100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] s.pop(0) # pop 指定位置刪除print(s) # 列印:[[100, 100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] del s[0]print(s) # 列印:[100.0, ‘lcg‘, True, "I‘am LiChengGuang", False] # 移除列表中某個值的第一個匹配項,沒有會拋異常s.remove(‘lcg‘)print(s)
其他
print(s * 2) # 列印兩次 s.reverse() # 反向列表中元素print(s) s2 = s.copy() # 複製print(s2) s.clear() # 清空print(s)
Tuple(元組)
元組寫在小括弧 () 裡,元素之間用逗號隔開,元組的元素不能修改,沒有 append(),insert() 這樣的方法。
可以通過索引切片來取值,可以使用len()求長度。
Dictionary(字典)
字典用 { } 標識或者 dict() 方法建立字典,它是一個無序的鍵 (key) : 值 (value) 對集合。鍵 (key) 必須使用不可變類型。在同一個字典中,鍵 (key) 必須是唯一的(如果不唯一,將只取最後一個值,但是不建議這樣寫)。{ } 是用來建立一個空字典。
dic = {‘name‘: ‘lcg‘, ‘site‘: ‘http://lcgsmile.cn/‘, ‘code‘: 1024}
訪問元素
print(dic) print(dic[‘site‘]) # 輸出鍵為 site 的值
修改元素
dic[‘code‘] = 520 # 修改元素print(dic[‘code‘]) # 列印:520
新增元素
dic[‘id‘] = 1314 # 新增元素print(dic) # 列印:{‘name‘: ‘lcg‘, ‘site‘: ‘http://lcgsmile.cn/‘, ‘code‘: 520, ‘id‘: 1314}
刪除元素
dic.pop(‘code‘) # 刪除 code 鍵print(dic) # 列印:{‘name‘: ‘lcg‘, ‘site‘: ‘http://lcgsmile.cn/‘, ‘id‘: 1314} dic.clear() # 清空print(dic) # 列印:{}# del dic # 刪除
其他
# dict() 方法建立字典d = dict(id=1024, name=‘lcg‘, site=‘http://lcgsmile.cn/‘)print(d)print(d.copy()) # 淺複製 print(dic.keys()) # 輸出所有鍵,列印:dict_keys([‘name‘, ‘site‘, ‘code‘])print(dic.values()) # 輸出所有值,列印:dict_values([‘lcg‘, ‘http://lcgsmile.cn/‘, 1024])
Sets(集合)
集合是一個無序不重複元素的序列,用大括弧 { } 或者 set() 函數建立。建立一個空集合必須用 set(),因為 { } 是用來建立一個空字典。
s = {‘name‘, ‘site‘, ‘code‘, 1, 1}print(s) # 輸出集合,重複的元素被自動去掉
空值
空值是 Python 裡一個特殊的值,用 None 表示。
補充
--沒完待續--
Python 基礎資料型別 (Elementary Data Type)