Python 中的變量不需要聲明。每個變量在使用前都必須指派,變量指派以後該變量才會被建立。在 Python 中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的記憶體中對象的類型。等号(=)用來給變量指派。等号(=)運算符左邊是一個變量名,等号(=)運算符右邊是存儲在變量中的值。例如:
count = 10
name = "python"
price = 12.5
也支援同時為多個變量指派。例如
a = b = c = 1
e, f, g = 1, 2, 3
如果想删除一個變量,可以使用
del
,删除後将不能在進行調用,例如
a = b = c = 1
del a, b
Python的資料類型
- Number(數字)
- String(字元串)
- List(清單)
- Tuple(元組)
- Set(集合)
- dictionary(字典)
不可變資料(3 個):
Number(數字)、String(字元串)、Tuple(元組)
,可變資料(3個):
List(清單)、Dictionary(字典)、Set(集合)
一、Number
Python 數字資料類型用于存儲數值。資料類型是不允許改變的,這就意味着如果改變數字資料類型的值,将重新配置設定記憶體空間
以下執行個體在變量指派時候Number對象将被建立:
a = 1
b = 2
1、Python支援三種不同的數值類型
- 整型(int):通常被稱為是整型或整數,是正或負整數,不帶小數點。Python3 整型是沒有限制大小的,可以當作 Long 類型使用,是以 Python3 沒有 Python2 的 Long 類型
- 浮點型(float):浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
- 複數(complex):複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型
2、Python數字類型轉換
有時候需要把資料内置的類型轉換,資料類型轉換,隻需要将資料類型作為函數名即可
- int(a):将a轉換為一個整數,如果是小數,會去掉小數位
- float(a):将a轉換到一個浮點數
- complex(a):将a轉換到一個複數,實數部分為a,虛數部分為0
- complex(a,b):将a和b轉換到一個複數,實數部分為a,虛數部分為b,a和b是數字表達式
a = 12.6
print(int(a))
# 輸出12
3、數字運算
這裡隻給一些使用例子,對運算符不熟悉的可以前往檢視之前的文章:
Python3入門(二)運算符a = 2
b = 1
c = 1.5
# 輸出結果:3
print(a + b)
# 輸出結果:2
print(a * b)
# 輸出結果:2.0
print(a / b)
# 輸出結果:2
print(a // b)
# 輸出結果:2
print(a ** b)
# 輸出結果:4.0
print(a * c + b)
# 輸出結果:1.0
print(a // c)
除法
/
總是傳回一個浮點數,如果想去掉可能的小數,考慮使用
//
,但是,
//得到的不一定是整數
,要根據除數和被除數的類型而定,上面的給出了例子;不同的資料類型之間混合運算,結果會轉換為浮點數
4、數學函數
函數 | 描述 |
---|---|
abs(a) | 傳回數字a的絕對值,如abs(-1)傳回1 |
ceil(a) | 傳回數字的上入整數,如math.ceil(4.1)傳回5 |
exp(a) | 傳回e的a次幂,如math.exp(1)傳回2.718281828459045 |
fabs(a) | 傳回數字的絕對值,如math.fabs(-1)傳回1.0 |
floor(a) | 傳回數字的下舍整數,如math.floor(4.6)傳回4 |
log(a) | 對數函數,如math.log(4,2)傳回2.0 |
max(a,b,c...) | 傳回給定參數的最大值,參數可以為序列 |
min(a,b,c...) | 傳回給定參數的最小值,參數可以為序列 |
modf(a) | 傳回a的整數部分和小數部分,兩部分的數值符号與a相同,整數部分以浮點數表示 |
pow(a,b) | a**b後的值 |
round(a,b) | 傳回a的四舍五入的值,b可以不設定,如果設定,表示舍入到小數的幾位 |
sqrt(a) | 傳回a的平方根 |
5、随機數函數
随機數可以用于數學,遊戲,安全等領域中,還經常被嵌入到算法中,用以提高算法效率,并提高程式的安全性。Python包含以下常用随機數函數
choice(seq) | 從序列的元素中随機挑選一個元素,比如random.choice(range(10)),從0到9中随機挑選一個整數。 |
randrange ([start], stop, [step]) | 從指定範圍内,按指定基數遞增的集合中擷取一個随機數,基數預設值為1 |
random() | 随機生成下一個實數,它在[0,1)範圍内 |
seed([x]) | 改變随機數生成器的種子seed。如果你不了解其原理,你不必特别去設定seed,Python會幫你選擇seed。 |
shuffle(lst) | 将序列的所有元素随機排序 |
uniform(x, y) | 随機生成下一個實數,它在[x,y]範圍内 |
6、三角函數
acos(x) | 傳回x的反餘弦弧度值 |
asin(x) | 傳回x的反正弦弧度值 |
atan(x) | 傳回x的反正切弧度值 |
atan2(y, x) | 傳回給定的 X 及 Y 坐标值的反正切值 |
cos(x) | 傳回x的弧度的餘弦值 |
hypot(x, y) | 傳回歐幾裡德範數 sqrt(xx + yy) |
sin(x) | 傳回的x弧度的正弦值 |
tan(x) | 傳回x弧度的正切值 |
degrees(x) | 将弧度轉換為角度,如degrees(math.pi/2) , 傳回90.0 |
radians(x) | 将角度轉換為弧度 |
7、數學常量
pi | 數學常量 pi(圓周率,一般以π來表示) |
e | 數學常量 e,e即自然常數(自然常數) |
二、String(字元串)
字元串是 Python 中最常用的資料類型。我們可以使用引号( ' 或 " )來建立字元串
1、通路字元串
Python 不支援單字元類型,單字元在 Python 中也是作為一個字元串使用。Python 通路子字元串,可以使用方括号來截取字元串,如下
a = "hello"
b = "python"
# 輸出:l
print(a[2])
# 輸出:pyt
print(b[0: 3])
2、改變字元串
截取字元串的一部分并與其他字段拼接
a = "hillo"
b = "world"
# 輸出hi world
print(a[0:2]+" "+b)
3、轉義字元
轉義字元 | |
---|---|
(行尾的時候) | 續行符 |
\ | 反斜杠符号 |
' | 單引号 |
" | 雙引号 |
a | 響鈴 |
b | 倒退 |
000 | 空 |
n | 換行 |
v | 縱向制表符 |
t | 橫向制表符 |
r | 回車 |
f | 換頁 |
oyy | 八進制數,yy代表字元 |
xyy | 十六進制數,yy代表字元 |
other | 其他的字元以普通格式輸出 |
4、字元串運算符
操作符 | |
---|---|
+ | 字元串品拼接 |
* | 重複輸出字元串 |
[] | 通過索引擷取字元串中字元 |
[a:b] | 截取字元串中一部分,a為開始下标,右為結束 |
in | 成員運算符,如果字元串中包含給定字元,傳回True |
not in | 如果字元串中不包含給定字元,傳回True |
r/R | 原始字元串 - 原始字元串:所有的字元串都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元 |
5、字元串格式化
Python 支援格式化字元串的輸出 。盡管這樣可能會用到非常複雜的表達式,但最基本的用法是将一個值插入到一個有字元串格式符 %s 的字元串中
# 輸出:翠花你今天真好看
print("%s你今天真好看" % '翠花')
格式化符号
符号 | |
---|---|
%c | 格式化字元及其ASCII碼 |
%d | 格式化整數 |
%s | 格式化字元串 |
%u | 格式化無符号整型 |
%o | 格式化無符号八進制數 |
%x | 格式化無符号十六進制數 |
%X | 格式化無符号十六進制數(大寫) |
%f | 格式化浮點數字,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 作用同%e,用科學計數法格式化浮點數 |
%g | %f和%e的簡寫 |
%G | %f 和 %E 的簡寫 |
%p | 用十六進制數格式化變量的位址 |
格式化輔助指令
功能 | |
---|---|
定義寬度或者小數點精度 | |
- | 用做左對齊 |
在正數前面顯示加号( + ) | |
在正數前面顯示空格 | |
# | 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X') |
顯示的數字前面填充'0'而不是預設的空格 | |
% | '%%'輸出一個單一的'%' |
(var) | 映射變量(字典參數) |
m.n. | m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話) |
6、三引号
python三引号允許一個字元串跨多行,字元串中可以包含換行符、制表符以及其他特殊字元
s = """啦啦啦啦
啦啦啦啦啦啦
使用制表符
TAB(\t)
換行符[\n]
"""
print(s)
7、字元串内帶函數
capitalize() | 将字元串的第一個字元轉換為大寫 |
center(width, fillchar) | 傳回一個指定的寬度 width 居中的字元串,fillchar 為填充的字元,預設為空格 |
count(str, beg= 0,end=len(string)) | 傳回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則傳回指定範圍内 str 出現的次數 |
bytes.decode(encoding="utf-8", errors="strict") | Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼傳回 |
encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的編碼格式編碼字元串,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
endswith(suffix, beg=0, end=len(string)) | 檢查字元串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍内是否以 obj 結束,如果是,傳回 True,否則傳回 False |
expandtabs(tabsize=8) | 把字元串 string 中的 tab 符号轉為空格,tab 符号預設的空格數是 8 |
find(str, beg=0, end=len(string)) | 檢測 str 是否包含在字元串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍内,如果包含傳回開始的索引值,否則傳回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一樣,隻不過如果str不在字元串中會報一個異常 |
isalnum() | 如果字元串至少有一個字元并且所有字元都是字母或數字則返 回 True,否則傳回 False |
isalpha() | 如果字元串至少有一個字元并且所有字元都是字母則傳回 True, 否則傳回 False |
isdigit() | 如果字元串隻包含數字則傳回 True 否則傳回 False |
islower() | 如果字元串中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是小寫,則傳回 True,否則傳回 False |
isnumeric() | 如果字元串中隻包含數字字元,則傳回 True,否則傳回 False |
isspace() | 如果字元串中隻包含空白,則傳回 True,否則傳回 False |
istitle() | 如果字元串是标題化的(見 title())則傳回 True,否則傳回 False |
isupper() | 如果字元串中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是大寫,則傳回 True,否則傳回 False |
join(seq) | 以指定字元串作為分隔符,将 seq 中所有的元素(的字元串表示)合并為一個新的字元串 |
len(string) | 傳回字元串長度 |
ljust(width[, fillchar]) | 傳回一個原字元串左對齊,并使用 fillchar 填充至長度 width 的新字元串,fillchar 預設為空格 |
lower() | 轉換字元串中所有大寫字元為小寫 |
lstrip() | 截掉字元串左邊的空格或指定字元 |
maketrans() | 建立字元映射的轉換表,對于接受兩個參數的最簡單的調用方式,第一個參數是字元串,表示需要轉換的字元,第二個參數也是字元串表示轉換的目标 |
max(str) | 傳回字元串 str 中最大的字母 |
min(str) | 傳回字元串 str 中最小的字母 |
replace(old, new [, max]) | 把 将字元串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次 |
rfind(str, beg=0,end=len(string)) | 類似于 find()函數,不過是從右邊開始查找 |
rindex( str, beg=0, end=len(string)) | 類似于 index(),不過是從右邊開始. |
rjust(width,[, fillchar]) | 傳回一個原字元串右對齊,并使用fillchar(預設空格)填充至長度 width 的新字元串 |
rstrip() | 删除字元串字元串末尾的空格 |
split(str="", num=string.count(str)) | num=string.count(str)) 以 str 為分隔符截取字元串,如果 num 有指定值,則僅截取 num+1 個子字元串 |
splitlines([keepends]) | 按照行('r', 'rn', n')分隔,傳回一個包含各行作為元素的清單,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符 |
startswith(substr, beg=0,end=len(string)) | 檢查字元串是否是以指定子字元串 substr 開頭,是則傳回 True,否則傳回 False。如果beg 和 end 指定值,則在指定範圍内檢查 |
strip([chars]) | 在字元串上執行 lstrip()和 rstrip() |
swapcase() | 将字元串中大寫轉換為小寫,小寫轉換為大寫 |
title() | 傳回"标題化"的字元串,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle()) |
translate(table, deletechars="") | 根據 str 給出的表(包含 256 個字元)轉換 string 的字元, 要過濾掉的字元放到 deletechars 參數中 |
upper() | 轉換字元串中的小寫字母為大寫 |
zfill (width) | 傳回長度為 width 的字元串,原字元串右對齊,前面填充0 |
isdecimal() | 檢查字元串是否隻包含十進制字元,如果是傳回 true,否則傳回 false。 |
三、清單
序列是Python中最基本的資料結構。序列中的每個元素都配置設定一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推,
清單是最常用的Python資料類型,它可以作為一個方括号内的逗号分隔值出現。清單的資料項不需要具有相同的類型
list1 = ["nihao", 13, 123.22]
1、通路值
使用下标索引進行通路清單的值
list1 = ["nihao", 13, 123.22]
print(list1[0])
print(list1[0:3])
2、更新清單内的值
可以對清單進行修改或者更新,也可以append()向清單内增加
list1 = ["nihao", 13, 123.22]
list1[0] = 'no'
list1.append("hello")
# 輸出:['no', 13, 123.22, 'hello']
print(list1)
3、删除清單元素
使用del語句來删除清單的元素
list1 = ["nihao", 13, 123.22]
del list1[0]
# 輸出結果:[13, 123.22]
print(list1)
4、腳本操作符
表達式 | |
---|---|
len(list) | 傳回清單長度 |
list1+list2 | 将兩個清單組合 |
["hi"] * 2 | 重複,得到["hi","hi"] |
3 in list1 | 判斷元素是否在清單裡,傳回True如果存在,反之False |
for x in list; print(x) | 疊代 |
5、截取和拼接
list[2] | 取清單第三個元素 |
list[-2] | 取右邊開始第二個元素 |
list[1:] | 讀取第二個元素開始後的所有元素 |
6、清單函數和方法
傳回清單元素的個數 | |
max(list) | 傳回清單元素的最大值 |
min(list) | 傳回清單元素的最小值 |
list(seq) | 将元素轉換為清單 |
- 方法
list.append(obj) | 在清單末尾添加新的對象 |
list.count(obj) | 統計某個元素在清單中出現的次數 |
list.extend(seq) | 在清單末尾一次性追加另一個序列中的多個值(用新清單擴充原來的清單) |
list.index(obj) | 從清單中找出某個值第一個比對項的索引位置 |
list.insert(index, obj) | 将對象插入清單 |
list.pop([index=-1]) | 移除清單中的一個元素(預設最後一個元素),并且傳回該元素的值 |
list.remove(obj) | 移除清單中某個值的第一個比對項 |
list.reverse() | 反向清單中元素 |
list.sort( key=None, reverse=False) | 對原清單進行排序 |
list.clear() | 清空清單 |
list.copy() | 複制清單 |
四、Tuple(元組)
Python 的元組與清單類似,不同之處在于元組的元素
不能修改
, 元組使用小括号,清單使用方括号,元組與字元串類似,下标索引從0開始,可以進行截取,組合等。
tup1 = ("1", 2, 'hello')
元組中隻包含一個元素時,需要在元素後面添加逗号,否則括号會被當作運算符使用
tup1 = ("1",)
1、通路元組
元組可以使用下标索引來通路元組中的值
tup1 = ("1", 2, 'hello')
print(tup1[1])
print(tup1[0:2])
2、修改元組
元組中的元素
值不可以更改
,但是可以将多個元組組合
tup1 = ("1", 2, 'hello')
tup2 = (1,)
tup3 = tup1 + tup2
print(tup3)
# 輸出:('1', 2, 'hello', 1)
3、删除元組
值是不允許删除的
,但是可以删除整個元組
tup1 = ("1", 2, 'hello')
del tup1
4、元組運算符
len(tup) | 傳回元素個數 |
tup1+tup2 | 将兩個元組組合 |
("hi") * 2 | 重複,得到("hi","hi") |
3 in tup1 | 判斷元素是否在元組裡,傳回True如果存在,反之False |
for x in tup; print(x) |
5、元組截取
tup[2] | 讀取元組的第三個元素 |
tup[-2] | 讀取元素倒數第二個元素 |
tup[1:] | 讀取元組從第二個元素開始的所有元素 |
6、元組的内置方法
傳回元組的元素個數 | |
max(tup) | 傳回元組中最大的元素 |
min(tup) | 傳回元組最小的元素 |
tuple(seq) | 将清單轉為元組 |
五、字典
字典是另一種可變容器模型,且可存儲任意類型對象。字典的每個鍵值(key=>value)對用冒号(:)分割,每個對之間用逗号(,)分割,整個字典包括在花括号({})中 ,格式如下所示
d = {"name": "test", "age": 12}
鍵必須是唯一的,但值則不必。值可以取任何資料類型,但鍵必須是不可變的,如字元串,數字或元組
1、通路字典的值
把相應的鍵放入到方括号中,如下執行個體:
d = {"name": "test", "age": 12}
print(d["name"])
2、修改字典
向字典添加新内容的方法是增加新的鍵/值對,修改或删除已有鍵/值對如下執行個體
d = {"name": "test", "age": 12}
d["name"] = "test2"
d["city"] = "xiamen"
# 輸出: test2
print(d["name"])
# 輸出: xiamen
print(d["city"])
3、删除字典中的元素
能删單一的元素也能清空字典,清空隻需一項操作。顯示删除一個字典用del指令,如下執行個體
d = {"name": "test", "age": 12}
# 删除鍵"name"
del d["age"]
# 清空字典
d.clear()
# 删除字典
del d
4、鍵的特性
字典值可以是任何的 python 對象,既可以是标準的對象,也可以是使用者定義的,但鍵不行。兩個重要的點需要記住:1、不允許同一個鍵出現兩次。建立時如果同一個鍵被指派兩次,後一個值會被記住,2、鍵必須不可變,是以可以用數字,字元串或元組充當,而用清單就不行
5、内置函數和方法
len(dic) | 計算字典的鍵的個數 |
str(dic) | 将字典以字元串輸出 |
type(variable) | 傳回輸入的變量類型,如果變量是字典,就傳回字典類型 |
radiansdict.clear() | 删除字典内所有元素 |
radiansdict.copy() | 傳回一個字典的淺複制 |
radiansdict.fromkeys() | 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
radiansdict.get(key, default=None) | 傳回指定鍵的值,如果值不在字典中傳回default值 |
key in dict | 如果鍵在字典dict裡傳回true,否則傳回false |
radiansdict.items() | 以清單傳回可周遊的(鍵, 值) 元組數組 |
radiansdict.keys() | 傳回一個疊代器,可以使用 list() 來轉換為清單 |
radiansdict.setdefault(key, default=None) | 和get()類似, 但如果鍵不存在于字典中,将會添加鍵并将值設為default |
radiansdict.update(dict2) | 把字典dict2的鍵/值對更新到dict裡 |
radiansdict.values() | |
pop(key[,default]) | 删除字典給定鍵 key 所對應的值,傳回值為被删除的值。key值必須給出。 否則,傳回default值 |
popitem() | 随機傳回并删除字典中的一對鍵和值(一般删除末尾對) |
六、集合
集合(set)是一個無序的不重複元素序列。可以使用大括号
{ }
或者
set()
函數建立集合,注意:建立一個
空集合必須用 set()
而不是 { },因為 { } 是用來建立一個空字典
set1 = {"val1", "val2"}
set2 = set("a")
1、集合的基本操作
- a、添加元素,如果元素已存在,不做任何操作
set1.add("val3")
- b、移除元素
如果元素不存在,會發生錯誤如果元素不存在,不會發生錯誤
set1.remove("val1")
也可以随機
set1.discard("val4")
set1.pop()
- c、計算集合元素的個數
len(set)
- d、清空集合
set.clear()
- e、判斷元素是否在集合中
val1 in set
2、集合内置所有方法
add() | 為集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷貝一個集合 |
difference() | 傳回多個集合的差集 |
difference update() | 移除集合中的元素,該集合在指定集合中也存在 |
discard() | 删除集合中指定的元素 |
intersection() | 傳回集合的交集 |
intersection update() | 删除集合中的元素,該元素在指定的集合中不存在 |
isdisjoint() | 判斷兩個集合是否包含相同的元素,如果沒有傳回 True,否則傳回 False |
issubset() | 判斷指定集合是否為該方法參數集合的子集 |
issuperset() | 判斷該方法的參數集合是否為指定集合的子集 |
pop() | 随機移除元素 |
emove() | 移除指定元素 |
symmetric_difference() | 傳回兩個集合中不重複的元素集合 |
symmetric_difference_update() | 移除目前集合中在另外一個指定集合相同的元素,并将另外一個指定集合中不同的元素插入到目前集合中 |
union() | 傳回兩個集合的并集 |
update() | 給集合添加元素 |
好了,本文到此就結束了,如發現有誤可以評論留言,我會馬上更改,歡迎大家關注哦~