Python基本數(shù)據(jù)類型
python系列文檔都是基于python3
- 數(shù)字
- 字符串
- 列表
- 元組
- 字典
- 集合
一俏竞、數(shù)字
特性:
- 只能存放一個(gè)值
- 一經(jīng)定義纵诞,不可更改
- 直接訪問(wèn)
- 整型
十進(jìn)制轉(zhuǎn)二進(jìn)制
bin(10)
十進(jìn)制轉(zhuǎn)八進(jìn)制
oct(10)
十進(jìn)制轉(zhuǎn)十六進(jìn)制
hex(10)
- int函數(shù)
int('10',base=10) #base=10鳄虱,表示將字符串轉(zhuǎn)換為十進(jìn)制 int('0b1010',base=2) #base=2,表示將字符串轉(zhuǎn)換為二進(jìn)制 int('0o12',base=8) #base=8,表示將字符串轉(zhuǎn)換為八進(jìn)制 int('0xa',base=16) #base=16,表示將字符串轉(zhuǎn)換為十六進(jìn)制
- 布爾
>>> bool(0) #零表示False
False
>>> bool(1) #非零數(shù)字自帶的布爾值都是True
True
>>> bool("hello") #非空的字符串布爾值都是True
True
- 浮點(diǎn)(float)
浮點(diǎn)數(shù)是屬于有理數(shù)中某特定子集的數(shù)的數(shù)字表示造壮,在計(jì)算機(jī)中用以近似表示任意某個(gè)實(shí)數(shù)。
>>> a=123.3442
>>> type(a)
<class 'float'>
- 復(fù)數(shù)
Python支持復(fù)數(shù)骂束,復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成耳璧,可以用a + bj,或者complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型展箱。
>>> 1.3 + 2.3j == 1.3 + 2.3j
True
二旨枯、字符串
由單引號(hào)、雙引號(hào)或者三引號(hào)引起來(lái)的內(nèi)容為字符串混驰。
>>> name = 'LAIN'
>>> type(name)
<class 'str'>
- 字符串操作
msg = 'Hello World'
print(msg.count('o')) #統(tǒng)計(jì)元素出現(xiàn)的次數(shù)攀隔;
print(msg.count('o',4,7)) #指定索引位范圍皂贩,顧頭不顧尾計(jì)算元素出現(xiàn)次數(shù);
print(msg.capitalize()) #將字符串第一個(gè)字母大寫(xiě)昆汹,其余全部小寫(xiě)明刷;
print(msg.casefold()) #將字符串所有字母小寫(xiě);
print(msg.lower()) #將字符串所有大寫(xiě)轉(zhuǎn)換為小寫(xiě)
print(msg.upper()) #將字符串所有小寫(xiě)轉(zhuǎn)換為大寫(xiě)
print(msg.center(20)) #將字符串居中满粗,以20個(gè)字符為基準(zhǔn)其余部分以空格填充辈末,進(jìn)行顯示;
print(msg.center(20,'#')) #將字符串居中映皆,以20個(gè)字符為基準(zhǔn)其余部分以"#"填充挤聘,進(jìn)行顯示;
print(msg.encode(encoding='utf-8',errors='')) #定義字符串顯示編碼捅彻;
print(msg.find('o')) #查找字符串元素组去,找到了顯示索引位,找不到顯示-1沟饥;
print(msg.index('o')) #與find類似添怔,找到了顯示索引位,找不到直接報(bào)錯(cuò)贤旷;
print('_'.join(['Hello','World'])) #字符串拼接广料,以'_'拼接兩個(gè)字符串;
print(msg.replace('Hello','Hi')) #字符串拼接幼驶,替換指定字符艾杏;
print(msg.split(' ')) #字符串拆分,默認(rèn)以空格為關(guān)鍵字' '盅藻;
print(msg.endswith('d')) #判斷字符串是否以'd'結(jié)尾购桑,True或者False
print(msg.expandtabs(tabsize=10)) #tab鍵以10個(gè)字符表示
print('{} {}'.format('name','agr')) #賦值給{}
print('{0}{1}{1}'.format('name','agr')) #賦值給{},必須按照位置一對(duì)一賦值
print(msg.isalnum()) #判斷是否是字母或數(shù)字
print(msg.isalpha()) #判斷是否是字母
print(msg.isnumeric()) #判斷是否是數(shù)字
print(msg.isdecimal()) #判斷是否是十進(jìn)制
print(msg.isdigit()) #判斷是否是整型數(shù)字
print(msg.isidentifier()) #判斷字符串是否是字母開(kāi)頭
print(msg.islower()) #判斷字符串是否全是小寫(xiě)字母
print(msg.isspace()) #判斷是否是空格
print(msg.istitle()) #判斷是否是標(biāo)題(只有首字母大寫(xiě)例:Helloworld)
print(msg.ljust(20,'#')) #字符串內(nèi)容向左對(duì)齊氏淑,總共占用20個(gè)字符勃蜘,其余字符以'#'表示
print(msg.rjust(20,'#')) #字符串內(nèi)容向右對(duì)齊,總共占用20個(gè)字符假残,其余字符以'#'表示
print(msg.lstrip()) #去掉左邊的空格
print(msg.rstrip()) #去掉右邊的空格
print(msg.strip()) #去掉左右兩邊的空格
print(msg.zfill(20)) #右對(duì)齊缭贡,不夠的位數(shù)用0填充,指定20個(gè)字符
三辉懒、列表
列表是最常用的Python數(shù)據(jù)類型阳惹,它可以作為一個(gè)方括號(hào)內(nèi)的逗號(hào)分隔值出現(xiàn)。通常作為函數(shù)的返回類型眶俩;列表是由一組元素組成莹汤,元素可以是整數(shù),字符串颠印,元組纲岭,或者是列表抹竹;每個(gè)元素分配一個(gè)數(shù)字,來(lái)表示索引位荒勇,第一個(gè)元素索引位為0柒莉,第二個(gè)為1,以此類推沽翔;列表操作有索引兢孝,切片,加仅偎,乘跨蟹,檢查成員。
- 列表操作
number = [1,2,3,4,5,6,7,8]
增加
number.append(9) #追加橘沥,在最后一個(gè)元素末尾追加整數(shù)'9'
number.insert(2,88) #插入窗轩,在第二個(gè)索引位插入整數(shù)'88'
刪除
number.remove(5) #刪除值,刪除元素'5'座咆;全量刪除不需要知道元素所在的索引位
del number[3] #刪除索引位為3的元素
number.pop() #默認(rèn)刪除最后一個(gè)痢艺,可以通過(guò)下標(biāo)刪除
number.pop(3) #刪除下標(biāo)為3的元素
修改
number[2] = 'hello' #直接修改,索引位為2的元素
查詢
print(number[2]) #查看索引位為2的元素
print(number[0::2]) #列表切片介陶,從第一個(gè)元素開(kāi)始堤舒,到最后一個(gè)結(jié)束,步長(zhǎng)為2(間隔一個(gè)元素)
print(number[-3:]) #列表切片哺呜,取倒數(shù)三個(gè)元素
print(number[:3]) #列表切片舌缤,取前三個(gè)元素
number.index('wangxu') #取這個(gè)元素的下標(biāo),如果沒(méi)有直接報(bào)錯(cuò)某残,如果有多個(gè)相同的元素只查找出第一個(gè)
統(tǒng)計(jì)
n2 = [3,2,67,88,23]
count print('count',number.count('3')) #統(tǒng)計(jì)出現(xiàn)次數(shù)
clear number.clear #清空列表
extend number.extend(n2) #合并列表
reverse number.reverse() #反轉(zhuǎn)
sort number.sort() #通過(guò)ascii碼表順序排序
copy number.copy() #拷貝列表
- 列表
copy
#copy和賦值的區(qū)別国撵,copy是拷貝一份副本,兩個(gè)列表互不影響玻墅;賦值相互影響介牙;
list1 = ['xiaoming','xiaolan','lain','laodeng']
list2 = list1.copy()
list3 = list1
list1.pop()
print("List1:",list1,id(list1))
print("List2:",list2,id(list2))
print("List3:",list3,id(list3))
####
List1: ['xiaoming', 'xiaolan', 'lain'] 57931976
List2: ['xiaoming', 'xiaolan', 'lain', 'laodeng',] 57404872
List3: ['xiaoming', 'xiaolan', 'lain'] 57931976
####
四、元組
元組就是上了枷鎖的列表澳厢,元組是不可改變的耻瑟,主要是用來(lái)讀。元組的標(biāo)志是逗號(hào)赏酥;
- 元組操作
tuple1 = (1,2,23,45,23,22,111,333,25,76,87,93)
print(tuple1) #查詢,查詢出元組內(nèi)的元素
print(tuple1.count(23)) #查詢谆构,統(tǒng)計(jì)出'23'出現(xiàn)的次數(shù)
print(len(tuple1)) #查詢裸扶,統(tǒng)計(jì)出元組里有多少元素
print(max(tuple1)) #查詢,統(tǒng)計(jì)出元組里最大的元素
print(min(tuple1)) #查詢搬素,統(tǒng)計(jì)出元組里最小的元素
print(tuple1[:2]) #元組切片呵晨,從頭開(kāi)始截取到索引位為2的元素魏保,不包含索引位為2的元素;顧頭不顧尾
print(tuple1[2:5])
print(tuple1[:]) #元組切片摸屠,從頭開(kāi)始取出所有元素
print(tuple1[-2]) #元組切片谓罗,取出倒數(shù)第二個(gè)元素
print(tuple1[::2]) #元組切片,步長(zhǎng)2(間隔一個(gè)元素)
del tuple1 #刪除元組季二,不可查
#元組本身是不可以刪除和修改的檩咱,但是可以通過(guò)字符串拼接來(lái)實(shí)現(xiàn)
tuple2 = ('xiaoli','haha','lain','laodeng','pangpang','wangwang')
tuple2 = tuple2[:2] + ('xiaohong',) + tuple2[2:] #元組添加,通過(guò)字符串拼接實(shí)現(xiàn)添加元素
print(tuple2)
tuple2 = tuple2[:2] + tuple2[3:] #元組刪除胯舷,通過(guò)字符串拼接刪除元素
print(tuple2)
五刻蚯、字典
字典一種key-value的數(shù)據(jù)類型,類似于json串桑嘶;將存儲(chǔ)更復(fù)雜的信息炊汹,獲取更簡(jiǎn)單;
- key的定義規(guī)則:
1.不可變逃顶,數(shù)字讨便、字符串、字典以政、元組(定義符合()霸褒,與列表完全一致,唯一不同的是元組內(nèi)元素不可變)
2.key必須是唯一的,所以字典天生有去重功能 - value的定義規(guī)則:
1.任意數(shù)據(jù)類型 - 字典的操作
dic = {'name':'lain','arg':28}
查詢:
print(dic['name'])
print(dic.get('name')) #get方法查詢不存在的項(xiàng)不會(huì)報(bào)錯(cuò)
添加:
dic['gender'] = 'female' #k:v 無(wú)序添加
修改:
dic['name'] = '11' #key不可修改
刪除:
del #萬(wàn)能刪除
del dic['name'] #刪除key
- 自帶函數(shù)方法
dicl = dict.fromkeys() #快速生成字典
dic.copy() #淺拷貝妙蔗,只拷貝一層
dic.get() #值不存在不會(huì)報(bào)錯(cuò)
dic.items() #打印轉(zhuǎn)換為列表形式
dic.keys() #取出字典中所有的key值
dic.pop() #pop刪除傲霸,括號(hào)內(nèi)寫(xiě)key,key不存在會(huì)報(bào)錯(cuò)
dic.popitem() #隨機(jī)刪除一對(duì)key.val
dic.setdefault() #添加字典
dic.update() #添加新字典眉反,添加字典內(nèi)容昙啄,修改字典內(nèi)容
dic.values() #取出字典所有values值
- 字典定義
dic = dict() #空字典
dic1 = dict({'name':'lain','age':18})
print(dic1)
dic2 = dict(name='lain',age=18)
print(dic2)
dic3 = dict((('name','lain'),('age','18')))
print(dic3)
六、集合
集合是一種無(wú)序的寸五,不重復(fù)的數(shù)據(jù)組合梳凛;集合在python中幾乎起到的所有作用就是兩個(gè)字:唯一
- 創(chuàng)建集合
#創(chuàng)建集合的兩種方式,一種是直接把一堆元素用大括號(hào){}括起來(lái)梳杏;另一種是用set()韧拒。
set1 = {1, 2, 3, 4, 5, 6, 'one', 'two'}
set2 = set([1, 2, 3, 4, 5, 6, 'one', 'two'])
print(type(set1))
print(type(set2))
-------
<class 'set'>
<class 'set'>
- 集合操作
#可以便歷方式訪問(wèn)
set1 = {1, 2, 3, 4, 5, 6, 'one', 'two'}
for i in set1:
print(i, end=' ')
--------
1 2 3 4 5 6 two one
#可以通過(guò)'in' 或者 'not in'來(lái)判斷元素是否存在集合中
1 in set1
'one' not in set1
add #添加元素到集合
update #添加集合到集合
pop #隨機(jī)刪除
remove #指定刪除,如果刪除元素不存在十性,程序報(bào)錯(cuò)
discard #指定刪除叛溢,如果刪除元素不存在,報(bào)none
clear #清空
symmetric_difference_update #差集后劲适,賦予新值楷掉;去除兩個(gè)集合中相同的,留下彼此沒(méi)有的霞势;
- 集合的模式
- 交集:intersection print(s1&s2)
- 并集:union print(s1|s2)
- 差集:difference print(s1-s2)
- 子集:issubset print(s1<=s2)
- 父集:issuperset print(s1>=s2)
- 對(duì)稱差集:symmetric_difference print(s1^s2) #去掉兩個(gè)集合里重復(fù)的
- 不可變的集合
#有時(shí)候需要集合的數(shù)據(jù)具有穩(wěn)定性烹植,不可增加或刪除斑鸦;就需要用frozenset()函數(shù)冰凍集合;
set3 = frozenset([1, 2, 3, 4, 5, 6, 'three', 'four'])