天天看點

Python3入門(三)基本資料類型

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() 給集合添加元素

好了,本文到此就結束了,如發現有誤可以評論留言,我會馬上更改,歡迎大家關注哦~