Python3 基本數(shù)據(jù)類型
Python 中的變量不需要聲明联四。每個(gè)變量在使用前都必須賦值沦童,變量賦值以后該變量才會(huì)被創(chuàng)建仑濒。
在 Python 中,變量就是變量偷遗,它沒有類型墩瞳,我們所說(shuō)的"類型"是變量所指的內(nèi)存中對(duì)象的類型。
等號(hào)(=)用來(lái)給變量賦值氏豌。
等號(hào)(=)運(yùn)算符左邊是一個(gè)變量名,等號(hào)(=)運(yùn)算符右邊是存儲(chǔ)在變量中的值喉酌。例如:
實(shí)例(Python 3.0+)
#!/usr/bin/python3
counter = 100 # 整型變量
miles = 1000.0 # 浮點(diǎn)型變量
name = "runoob" # 字符串
print (counter)
print (miles)
print (name)
執(zhí)行以上程序會(huì)輸出如下結(jié)果:
100
1000.0
runoob
一 標(biāo)準(zhǔn)數(shù)據(jù)類型
Python3 中有六個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型:
Number(數(shù)字)
String(字符串)
List(列表)
Tuple(元組)[t?pl]
Set(集合)
Dictionary(字典)[?d?k??neri]
Number(數(shù)字)Python3 數(shù)字類型分為
- int
- float
- bool
- complex(復(fù)數(shù))
在Python 3里,只有一種整數(shù)類型 int箩溃,表示為長(zhǎng)整型瞭吃,沒有 python2 中的 Long。
像大多數(shù)語(yǔ)言一樣涣旨,數(shù)值類型的賦值和計(jì)算都是很直觀的歪架。
內(nèi)置的 type() 函數(shù)可以用來(lái)查詢變量所指的對(duì)象類型。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
此外還可以用 isinstance 來(lái)判斷:
>>>a = 111
>>> isinstance(a, int)
True
>>>
isinstance 和 type 的區(qū)別在于:
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
區(qū)別就是:
type()不會(huì)認(rèn)為子類是一種父類類型霹陡。
isinstance()會(huì)認(rèn)為子類是一種父類類型和蚪。
注意:
? 在 Python2 中是沒有布爾型的,它用數(shù)字 0 表示 False烹棉,用 1 表示 True攒霹。
? Python3 中,把 True 和 False 定義成關(guān)鍵字了浆洗,但它們的值還是 1 和 0催束,它們可以和數(shù)字相加。
當(dāng)你指定一個(gè)值時(shí)伏社,Number 對(duì)象就會(huì)被創(chuàng)建:
var1 = 1
var2 = 10
您也可以使用del語(yǔ)句刪除一些對(duì)象引用抠刺。
del語(yǔ)句的語(yǔ)法是:
del var1[,var2[,var3[....,varN]]]]
您可以通過(guò)使用del語(yǔ)句刪除單個(gè)或多個(gè)對(duì)象。例如:
del var #不要將關(guān)鍵字命名為變量 否則會(huì)有問(wèn)題 如 str
del var_a, var_b
注意:
Python可以同時(shí)為多個(gè)變量賦值摘昌,
#如: a, b = 1, 2 #對(duì)稱賦值 a, b, c, d = 'love'//a=l b=c 依次類推 #統(tǒng)一賦值 a = b = c = d = 10;
一個(gè)變量可以通過(guò)賦值指向不同類型的對(duì)象速妖。
數(shù)值的除法(/)總是返回一個(gè)浮點(diǎn)數(shù),要獲取整數(shù)使用//操作符聪黎。
在混合計(jì)算時(shí)罕容,Python會(huì)把整型轉(zhuǎn)換成為浮點(diǎn)數(shù)。
數(shù)值類型實(shí)例
int | float | complex |
---|---|---|
10 | 0.0(.2) | 3.14j |
100 | 15.20 | 45j |
-786 | -21.9 | 9.322e-36j |
Python還支持復(fù)數(shù),復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成锦秒,可以用a + bj,或者complex(a,b)表示露泊, 復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型
數(shù)值運(yùn)行的函數(shù) import match
match.ceil(x)
match.floor()
pow(x,y) | x**y 運(yùn)算后的值 |
---|---|
round(x[,n]) | 返回浮點(diǎn)數(shù)x的四舍五入值,如給出n值脂崔,則代表舍入到小數(shù)點(diǎn)后的位數(shù)滤淳。 |
max(x1,x2,,,,) | 返回給定參數(shù)的最大值梧喷,參數(shù)可以為序列 |
min(x1,x2,,,,) | 返回給定參數(shù)的最小值砌左,參數(shù)可以為序列 |
ceil(x) | 返回?cái)?shù)字的上入整數(shù),如math.ceil(4.1) 返回 5 |
floor() | 返回?cái)?shù)字的下舍整數(shù)铺敌,如math.floor(4.9)返回 4 |
隨機(jī)數(shù)的函數(shù) import random
choice(seq) | 返回一個(gè)列表汇歹,元組或字符串的隨機(jī)項(xiàng)。 seq -- 可以是一個(gè)列表偿凭,元組或字符串产弹。 |
---|---|
choices(seq,k=1) | 返回隨機(jī)的k個(gè)值 random.choices('abcdefghijklmn',k=6)) |
randrange(start,stop,step) | start -- 指定范圍內(nèi)的開始值,包含在范圍內(nèi)弯囊。 stop -- 指定范圍內(nèi)的結(jié)束值痰哨,不包含在范圍內(nèi)。 step -- 指定遞增基數(shù)匾嘱。 |
shuffle(list) | 將列表的所有元素隨機(jī)排序 |
uniform(x,y) | 隨機(jī)生成下一個(gè)實(shí)數(shù)斤斧,它在[x,y]范圍內(nèi)。 |
randint(1,100) | 隨機(jī)整數(shù) |
序列 字符串 列表 元組的取值方式
截取的語(yǔ)法格式如下:
變量[頭下標(biāo):尾下標(biāo)]
索引值以 0 為開始值霎烙,-1 為從末尾的開始位置撬讽。
加號(hào) (+) 是字符串的連接符, 星號(hào) (*) 表示復(fù)制當(dāng)前字符串悬垃,緊跟的數(shù)字為復(fù)制的次數(shù)游昼。
二 String(字符串)
Python中的字符串用單引號(hào)(')或雙引號(hào)(")括起來(lái),同時(shí)使用反斜杠()轉(zhuǎn)義特殊字符尝蠕。
字符串的截取的語(yǔ)法格式如下:
變量[頭下標(biāo):尾下標(biāo)]
索引值以 0 為開始值烘豌,-1 為從末尾的開始位置。
加號(hào) (+) 是字符串的連接符看彼, 星號(hào) (*) 表示復(fù)制當(dāng)前字符串廊佩,緊跟的數(shù)字為復(fù)制的次數(shù)。實(shí)例如下:
實(shí)例
str = 'Runoob'
print (str) # 輸出字符串
print (str[0:-1]) # 輸出第一個(gè)到倒數(shù)第二個(gè)的所有字符
star[-3:-1] # 輸出倒數(shù)第三個(gè)至倒數(shù)第一個(gè)的字符
print (str[0]) # 輸出字符串第一個(gè)字符
print (str[2:5]) # 輸出從第三個(gè)開始到第五個(gè)的字符
print (str[2:]) # 輸出從第三個(gè)開始的后的所有字符
print (str[:]) # 輸出所有
print (str[:5]) # 截取到5為止
print (str * 2) # 輸出字符串兩次
print (str + "TEST") # 連接字符串
str[-1:1:-1] #范圍查詢,步長(zhǎng)默認(rèn)是1闲昭,如果步長(zhǎng)為正罐寨,從左往右查詢,如果步長(zhǎng)為負(fù)序矩,從右往左
str[-1::-1] #輸出所有 倒著輸出
注意:
- 反斜杠可以用來(lái)轉(zhuǎn)義鸯绿,使用r可以讓反斜杠不發(fā)生轉(zhuǎn)義。
- 字符串可以用+運(yùn)算符連接在一起,用*運(yùn)算符重復(fù)瓶蝴。
- Python中的字符串有兩種索引方式毒返,從左往右以0開始,從右往左以-1開始舷手。
- Python中的字符串不能改變拧簸。
字符串的轉(zhuǎn)義字符
? 在需要在字符中使用特殊字符時(shí),python用反斜杠()轉(zhuǎn)義字符男窟。如下表:
\(在行尾時(shí)) | 續(xù)行符 | \\ | 反斜杠符號(hào) |
---|---|---|---|
' | 單引號(hào) | " | 雙引號(hào) |
\n | 換行 | \r | 回車 |
\t | 水平制表符(4個(gè)空格) |
續(xù)行符
myStr = 'abcde\
f'
格式化輸出
%d %s %f 占位符
精確到小數(shù)點(diǎn)后3位盆赤,會(huì)四舍五入
print("num = %d, str19 = %s, f = %.3f" % (num, str19, f))
#% '%%'輸出一個(gè)單一的'%'
print("%-10.2f"%22.11111,'asdasd') #10 為10個(gè)長(zhǎng)度 用做左對(duì)齊
print("%10.2f"%22.11111,'asdasd') #10 為10個(gè)長(zhǎng)度 用做右對(duì)齊
當(dāng)值為元組的時(shí)候則會(huì)報(bào)錯(cuò)
"hi there %s" % name
但是,如果name恰好是(1,2,3),它將會(huì)拋出一個(gè)TypeError異常.為了保證它總是正確的,你必須這樣做:
"hi there %s" % (name,) # 提供一個(gè)單元素的數(shù)組而不是一個(gè)參數(shù)
使用format進(jìn)行格式化
print("字符串{} 浮點(diǎn)數(shù){} 整數(shù){}".format('asd',11.1,8))
isnumeric() [nu:'mer?k] | 如果字符串中只包含數(shù)字字符,則返回 True歉眷,否則返回 False |
---|---|
splitStr.join(Str) | 以指定字符串作為分隔符牺六,將 seq 中所有的元素(的字符串表示)合并為一個(gè)新的字符串 |
center(self,width,fillchar) | 以原始字符串為中心生成新字符串 |
ljust(width,[str]) | 返回一個(gè)原字符串左對(duì)齊,并使用 fillchar 填充至長(zhǎng)度 width 的新字符串,fillchar 默認(rèn)為空格汗捡。 |
rjust(width,[str]) | 返回一個(gè)原字符串右對(duì)齊,并使用 fillchar 填充至長(zhǎng)度 width 的新字符串淑际,fillchar 默認(rèn)為空格。 |
lstrip()/rstrip()/strip | 截掉字符串左/右邊的空格或指定字符/倆側(cè) |
max(str)/min(str) | 返回字符串 str 中最大/小的字母扇住。 |
chr(x) | 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)字符 |
ord(x) | 將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值 |
myStr.replace(old,new[,max]) | 把 將字符串中的 str1 替換成 str2,如果 max 指定春缕,則替換不超過(guò) max 次。 |
find(str,beg=0,end=len)/index(str) | 查找某個(gè)字符出現(xiàn)的位置 從左側(cè)開始查找 查到返回索引值 查不到返回-1 /查到返回索引 查不到報(bào)錯(cuò) |
rfind(str,beg=0,end=len)/rindex(str) | 查找某個(gè)字符出現(xiàn)的位置 從右側(cè)開始查找 查到返回索引值 查不到返回-1 /右查到返回索引 查不到報(bào)錯(cuò) |
split(str=''[,num]) | num=string.count(str)) 以 str 為分隔符拆分字符串為列表艘蹋,如果 num 有指定值锄贼,則僅截取 num 個(gè)子字符串 |
swapcase() | 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫 |
upper() | 轉(zhuǎn)換字符串中的小寫字母為大寫 |
lower() | 轉(zhuǎn)換字符串中的寫字母為小寫 |
splitlines(True) | 以回車換行為條件分割簿训,參數(shù)用來(lái)設(shè)置是否保留換行 |
三 List(列表)
List(列表) 是 Python 中使用最頻繁的數(shù)據(jù)類型咱娶。
列表是寫在方括號(hào)([])之間、用逗號(hào)分隔開的元素列表强品。
>>>a = [1, 2, 3, 4, 5, 6]
>>> a[-2] #5
>>> a[0] = 9 #修改值
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 刪除
>>> del a[2] # 刪除 索引值為2的值
>>> a.clear() # 清空列表
>>> a
[9, 2, 6]
#添加值
a.append(3) #添加一個(gè)值
a.extend([1,2,3,4]) #添加多個(gè)值
多維列表
mylist = [[1,2,3], [4,5,6], [7,8,9]]
多維列表的取值
mylist[0] #[1,2,3]
mylist[0][0] #1
多維列表的遍歷
for i in mylist:
for x in i:
print(x)
注意
- 與Python字符串不一樣的是膘侮,列表中的元素是可以改變的:
- List寫在方括號(hào)之間,元素用逗號(hào)隔開的榛。
- 和字符串一樣琼了,list可以被索引和切片。
- List可以使用+操作符進(jìn)行拼接夫晌。
- List中的元素是可以改變的雕薪。
常用列表的相關(guān)函數(shù)
len() | 計(jì)算列表的長(zhǎng)度 |
---|---|
list.count() | 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù) |
append | 向列表中添加一個(gè)值 |
list.extend() | 在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來(lái)的列表) |
list.index() | 從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置 |
list.insert(index,obj) | 將對(duì)象插入列表 |
list.pop() | 移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值 |
list.remove() | 移除列表中某個(gè)值的第一個(gè)匹配項(xiàng) |
list.reverse() | 反向列表中元素 |
list.sort() | 對(duì)原列表進(jìn)行排序 |
list.clear() | 清空列表 |
list.copy() | 復(fù)制列表 |
copy.deepcopy() | 深拷貝 拷貝對(duì)象及其子對(duì)象 |
copy.copy() | 淺拷貝 只拷貝父對(duì)象晓淀,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象 |
四 Tuple(元組)
元組(tuple)與列表類似所袁,不同之處在于元組的元素不能修改。元組寫在小括號(hào)(())里凶掰,元素之間用逗號(hào)隔開燥爷。
元組與字符串類似蜈亩,可以被索引且下標(biāo)索引從0開始,-1 為從末尾開始的位置前翎。也可以進(jìn)行截戎膳洹(看上面,這里不再贅述)港华。
注意
- 與字符串一樣道川,元組的元素不能修改。
- 元組也可以被索引和切片立宜,方法一樣冒萄。
- 注意構(gòu)造包含0或1個(gè)元素的元組的特殊語(yǔ)法規(guī)則。 空元祖() 一個(gè)值的元祖(1,)
- 元組也可以使用+操作符進(jìn)行拼接赘理。
- 元組的個(gè)別值不可以刪除 但我們可以使用del語(yǔ)句來(lái)刪除整個(gè)元組
五 Set(集合)
集合(set)是一個(gè)無(wú)序不重復(fù)元素的序列宦言。
基本功能是進(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素
可以使用大括號(hào) { } 或者 set() 函數(shù)創(chuàng)建集合,
注意:創(chuàng)建一個(gè)空集合必須用 set() 而不是 { }商模,因?yàn)?{ } 是用來(lái)創(chuàng)建一個(gè)空字典。
# 成員測(cè)試
if 'Rose' in student :
print('Rose 在集合中')
else :
print('Rose 不在集合中')
# set可以進(jìn)行集合運(yùn)算
a = set('abr')
b = set('ala')
print(a)
print(a - b) # a和b的差集
print(a | b) # a和b的并集
print(a & b) # a和b的交集
print(a ^ b) # a和b中不同時(shí)存在的元素
六 Dictionary (字典)
語(yǔ)法格式: {健:值,健:值...}
字典的取值
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['name']) # 輸出鍵為 'name' 的值
print (tinydict) # 輸出完整的字典
print (tinydict.keys()) # 輸出所有鍵
print (tinydict.values()) # 輸出所有值
字典值的添加
當(dāng)給原字典 添加了一個(gè)不存在的健對(duì)應(yīng)的值的時(shí)候 則為添加
myDict = {'name':'張三'}
myDict['age'] = 18 #將age:18添加到 字典 myDict里
字典的值的修改
當(dāng)給字典已存在的鍵 賦新的值的時(shí)候 是對(duì)鍵key的值進(jìn)行修改
myDict = {'name':'張三'}
myDict['name'] = '李四' #將健key 為name的 值修改為 李四
字典的值的刪除
通過(guò)字典的唯一的健進(jìn)行刪除
myDict = {'name':'張三'}
del myDict['name'] #將健key 為name的 健值對(duì)刪除
刪除字典
del 字典名
字典名.clear() #清空整個(gè)字典
del myDict['name']
構(gòu)造函數(shù) dict() 可以直接從鍵值對(duì)序列中構(gòu)建字典如下:
>>>dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Taobao': 3, 'Runoob': 1, 'Google': 2}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Taobao': 3, 'Runoob': 1, 'Google': 2}
#想使用函數(shù) dict 轉(zhuǎn)換成 字典 前提是 必須鍵值對(duì) 的形式
myList = [('name', '張三'), ('age', 18), ('sex', '男'), ('hobby', '寫代碼')]
myList = [{'name', '張三'}, {'age', 18}, {'sex', '男'}, {'hobby', '寫代碼'}]
myList = [['name', '張三'], ['age', 18], ['sex', '男'], ['hobby', '寫代碼']]
字典的遍歷
for i in mydict:
print(i) #返回的都是鍵
for x,y in mydict.items(): #items() 函數(shù)以列表返回可遍歷的(鍵, 值) 元組數(shù)組蜘澜。
print(x,y) #返回鍵 值
注意:
- 字典是一種映射類型施流,它的元素是鍵值對(duì)。
- 字典的關(guān)鍵字必須為不可變類型鄙信,且不能重復(fù)瞪醋。
- 創(chuàng)建空字典使用 { }。
- 列表是有序的對(duì)象結(jié)合装诡,字典是無(wú)序的對(duì)象集合银受。
- 兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過(guò)鍵來(lái)存取的,而不是通過(guò)偏移存取
- 字典是一種映射類型鸦采,字典用"{ }"標(biāo)識(shí)宾巍,它是一個(gè)無(wú)序的鍵(key) : 值(value)對(duì)集合。
- 在同一個(gè)字典中渔伯,鍵(key)必須是唯一的顶霞。
字典常用的函數(shù)
mydict.items() | 以列表返回可遍歷的(鍵, 值) 元組數(shù)組 |
---|---|
mydict.keys()/mydict.values() | 以列表返回一個(gè)字典所有的鍵/以列表返回一個(gè)字典所有的值 |
mydict.update(dict2) | 把字典dict2的鍵/值對(duì)更新到dict里 |
mydict.pop(key) | 刪除字典給定鍵 key 所對(duì)應(yīng)的值,返回值為被刪除的值锣吼。key值必須給出选浑。 否則,返回default值玄叠。 |
mydict.popitem() | 隨機(jī)返回并刪除字典中的一對(duì)鍵和值古徒。 返回一個(gè)鍵值對(duì)(key,value)形式。3.6(刪除字典中最后一個(gè)鍵值對(duì)) |
mydict.copy() | 返回一個(gè)字典的淺復(fù)制 |
deepcopy() | 深復(fù)制 |
myDict.clear() | 清空字典 |
Get | 通過(guò)鍵獲取值 |
import copy
myDict = {'a':{'c':'d'}}
b = copy.copy(myDict)
myDict['a']['c'] = 'f'
print(myDict)
print(b)
七 Python數(shù)據(jù)類型轉(zhuǎn)換
函數(shù) | 描述 |
---|---|
int(x [,base]) | 將x轉(zhuǎn)換為一個(gè)整數(shù) |
float(x) | 將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù) |
complex(x [,y]) | 將 x 和 y 轉(zhuǎn)換到一個(gè)復(fù)數(shù)读恃,實(shí)數(shù)部分為 x隧膘,虛數(shù)部分為 y崎苗。x 和 y 是數(shù)字表達(dá)式。 |
str(x) | 將對(duì)象 x 轉(zhuǎn)換為字符串 |
eval(str) | 用來(lái)計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象 |
tuple(s) | 將序列 s 轉(zhuǎn)換為一個(gè)元組 |
list(s) | 將序列 s 轉(zhuǎn)換為一個(gè)列表 |
set(s) | 轉(zhuǎn)換為可變集合 |
dict(d) | 創(chuàng)建一個(gè)字典舀寓。d 必須是一個(gè)序列 (key,value)元組胆数。 |
bool | 轉(zhuǎn)換為bool值 |