python基礎(chǔ)二(基礎(chǔ)數(shù)據(jù)類(lèi)型)
一、引子
1 什么是數(shù)據(jù)蚣常?
x=10市咽,10是我們要存儲(chǔ)的數(shù)據(jù)
2 為何數(shù)據(jù)要分不同的類(lèi)型
數(shù)據(jù)是用來(lái)表示狀態(tài)的,不同的狀態(tài)就應(yīng)該用不同的類(lèi)型的數(shù)據(jù)去表示
3 數(shù)據(jù)類(lèi)型
數(shù)字? 字符串? ? 列表? 元組? 字典? ? 集合
二抵蚊、基礎(chǔ)數(shù)據(jù)類(lèi)型
2.1數(shù)字int
數(shù)字主要是用于計(jì)算用的施绎,使用方法并不是很多溯革,就記住一種就可以:
#bit_length() 當(dāng)十進(jìn)制用二進(jìn)制表示時(shí),最少使用的位數(shù)
v = 11
data = v.bit_length()
print(data)
2.2布爾值bool
布爾值就兩種:True谷醉,F(xiàn)alse致稀。就是反應(yīng)條件的正確與否
真 ? 1 ? True
假 ? 0 ? False ?
2.3字符串str
2.3.1、字符串的索引與切片俱尼。
?索引即下標(biāo)抖单,就是字符串組成的元素從第一個(gè)開(kāi)始,初始索引為0以此類(lèi)推遇八。
a = 'ABCDEFGHIJK'
print(a[0])
print(a[3])
print(a[5])
print(a[7])
切片就是通過(guò)索引(索引:索引:步長(zhǎng))截取字符串的一段臭猜,形成新的字符串(原則就是顧頭不顧腚)。
a = 'ABCDEFGHIJK'
print(a[0:3])
print(a[2:5])
print(a[0:]) #默認(rèn)到最后
print(a[0:-1]) # -1 是列表中最后一個(gè)元素的索引押蚤,但是要滿足顧頭不顧腚的原則,所以取不到K元素
print(a[0:5:2]) #加步長(zhǎng)
print(a[5:0:-2]) #反向加步長(zhǎng)
2.3.2羹应、字符串常用方法
#captalize,swapcase,title
print(name.capitalize()) #首字母大寫(xiě)
print(name.swapcase()) #大小寫(xiě)翻轉(zhuǎn)
msg='egon say hi'
print(msg.title()) #每個(gè)單詞的首字母大寫(xiě)
# 內(nèi)同居中揽碘,總長(zhǎng)度,空白處填充
ret2 = a1.center(20,"*")
print(ret2)
#數(shù)字符串中的元素出現(xiàn)的個(gè)數(shù)园匹。
# ret3 = a1.count("a",0,4) # 可切片
# print(ret3)
a2 = "hqw\t"
#\t前面的補(bǔ)全
# 默認(rèn)將一個(gè)tab鍵變成8個(gè)空格雳刺,如果tab前面的字符長(zhǎng)度不足8個(gè),則補(bǔ)全8個(gè)裸违,如果tab鍵前面的字符長(zhǎng)度超過(guò)8個(gè)不足16個(gè)則補(bǔ)全16個(gè)掖桦,以此類(lèi)推每次補(bǔ)全8個(gè)。
ret4 = a2.expandtabs()
print(ret4)
a4 = "dkfjdkfasf54"
#startswith 判斷是否以...開(kāi)頭
#endswith 判斷是否以...結(jié)尾
# ret4 = a4.endswith('jdk',3,6) # 顧頭不顧腚
# print(ret4) # 返回的是布爾值
# ret5 = a4.startswith("kfj",1,4)
# print(ret5)
#尋找字符串中的元素是否存在
# ret6 = a4.find("fjdk",1,6)
# print(ret6) # 返回的找到的元素的索引供汛,如果找不到返回-1
# ret61 = a4.index("fjdk",4,6)
# print(ret61) # 返回的找到的元素的索引枪汪,找不到報(bào)錯(cuò)。
#split 以什么分割怔昨,最終形成一個(gè)列表此列表不含有這個(gè)分割的元素雀久。
# ret9 = 'title,Tilte,atre,'.split('t')
# print(ret9)
# ret91 = 'title,Tilte,atre,'.rsplit('t',1)
# print(ret91)
#format的三種玩法 格式化輸出
res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
#strip
name='*egon**'
print(name.strip('*'))
print(name.lstrip('*'))
print(name.rstrip('*'))
#replace (替換)
replace(old, new, count)
replace('被替換的字符串','要替換的字符串',一組字符串當(dāng)中替換的次數(shù))
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1))
輸出:SB say :i have one tesla,my name is alex
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',2))
輸出:SB say :i have one tesla,my name is SB
#####is系列
name='jinxin123'
print(name.isalnum()) #字符串由字母或數(shù)字組成
print(name.isalpha()) #字符串只由字母組成
print(name.isdigit()) #字符串只由數(shù)字組成
?2.4元祖tuple
元組被稱為只讀列表,即數(shù)據(jù)可以被查詢趁舀,但不能被修改赖捌,所以,字符串的切片操作同樣適用于元組矮烹。例:(1越庇,2,3)("a","b","c")
?2.5列表list
列表是python中的基礎(chǔ)數(shù)據(jù)類(lèi)型之一奉狈,其他語(yǔ)言中也有類(lèi)似于列表的數(shù)據(jù)類(lèi)型卤唉,比如js中叫數(shù)組,他是以[]括起來(lái)仁期,每個(gè)元素以逗號(hào)隔開(kāi)搬味,而且他里面可以存放各種數(shù)據(jù)類(lèi)型比如:
li = [‘a(chǎn)lex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串境氢,不僅可以儲(chǔ)存不同的數(shù)據(jù)類(lèi)型,而且可以儲(chǔ)存大量數(shù)據(jù)碰纬,32位python的限制是 536870912 個(gè)元素,64位python的限制是 1152921504606846975 個(gè)元素萍聊。而且列表是有序的,有索引值悦析,可切片寿桨,方便取值。
2.5.1强戴、增亭螟。
li = [1,'a','b',2,3,'a']
# li.insert(0,55) #按照索引去增加
# print(li)
#
# li.append('aaa') #增加到最后
# li.append([1,2,3]) #增加到最后
# print(li)
#
# li.extend(['q,a,w']) #迭代的去增
# li.extend(['q,a,w','aaa'])
# li.extend('a')
# li.extend('abc')
# li.extend('a,b,c')
# print(li)
2.5.2、刪
# l1 = li.pop(1) #按照位置去刪除骑歹,有返回值
# print(l1)
# del li[1:3] #按照位置去刪除预烙,也可切片刪除沒(méi)有返回值。
# print(li)
# li.remove('a') #按照元素去刪除
# print(li)
# li.clear() #清空列表
2.5.3道媚、改
# 改
# li = [1,'a','b',2,3,'a']
# li[1] = 'dfasdfas'
# print(li)
# li[1:3] = ['a','b']
# print(li)
2.5.4扁掸、查
切片去查,或者循環(huán)去查最域。
2.5.5谴分、其他操作
count(數(shù))(方法統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù))。
a = ["q","w","q","r","t","y"]
print(a.count("q"))
index(方法用于從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置)
a = ["q","w","r","t","y"]
print(a.index("r"))
sort (方法用于在原位置對(duì)列表進(jìn)行排序)
reverse (方法將列表中的元素反向存放)
a = [2,1,3,4,5]
a.sort()# 他沒(méi)有返回值镀脂,所以只能打印a
print(a)
a.reverse()#他也沒(méi)有返回值牺蹄,所以只能打印a
print(a)
?2.6字典dict。
字典是python中唯一的映射類(lèi)型薄翅,采用鍵值對(duì)(key-value)的形式存儲(chǔ)數(shù)據(jù)沙兰。python對(duì)key進(jìn)行哈希函數(shù)運(yùn)算,根據(jù)計(jì)算的結(jié)果決定value的存儲(chǔ)地址翘魄,所以字典是無(wú)序存儲(chǔ)的僧凰,且key必須是可哈希的∈焱瑁可哈希表示key必須是不可變類(lèi)型训措,如:數(shù)字、字符串光羞、元組绩鸣。
字典(dictionary)是除列表意外python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類(lèi)型。列表是有序的對(duì)象結(jié)合纱兑,字典是無(wú)序的對(duì)象集合呀闻。兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過(guò)鍵來(lái)存取的,而不是通過(guò)偏移存取潜慎。
2.6.1捡多、增
# dic['li'] = ["a","b","c"]
# print(dic)
# setdefault 在字典中添加鍵值對(duì)蓖康,如果只有鍵那對(duì)應(yīng)的值是none,但是如果原字典中存在設(shè)置的鍵值對(duì),則他不會(huì)更改或者覆蓋垒手。
# dic.setdefault('k','v')
# print(dic) # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
# dic.setdefault('k','v1') # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
# print(dic)
2.6.2蒜焊、刪
# dic_pop = dic.pop("a",'無(wú)key默認(rèn)返回值') # pop根據(jù)key刪除鍵值對(duì),并返回對(duì)應(yīng)的值科贬,如果沒(méi)有key則返回默認(rèn)返回值
# print(dic_pop)
# del dic["name"] # 沒(méi)有返回值泳梆。
# print(dic)
# dic_pop1 = dic.popitem() # 隨機(jī)刪除字典中的某個(gè)鍵值對(duì),將刪除的鍵值對(duì)以元祖的形式返回
# print(dic_pop1) # ('name','jin')
# dic_clear = dic.clear() # 清空字典
# print(dic,dic_clear) # {} None
2.6.3榜掌、改
# 改
# dic = {"name":"jin","age":18,"sex":"male"}
# dic2 = {"name":"alex","weight":75}
# dic2.update(dic) # 將dic所有的鍵值對(duì)覆蓋添加(相同的覆蓋优妙,沒(méi)有的添加)到dic2中
# print(dic2)
2.6.4、查
# value1 = dic["name"] # 沒(méi)有會(huì)報(bào)錯(cuò)
# print(value1)
#
# value2 = dic.get("djffdsafg","默認(rèn)返回值") # 沒(méi)有可以返回設(shè)定的返回值
# print(value2)
2.6.5憎账、其他操作
# item = dic.items()
# print(item,type(item)) # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'>
# 這個(gè)類(lèi)型就是dict_items類(lèi)型套硼,可迭代的
# keys = dic.keys()
# print(keys,type(keys)) # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'>
# values = dic.values()
# print(values,type(values)) # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上
字典的循環(huán)
# dic = {"name":"jin","age":18,"sex":"male"}
# for key in dic:
# print(key)
# for item in dic.items():
# print(item)
# for key,value in dic.items():
# print(key,value)
三,基礎(chǔ)數(shù)據(jù)類(lèi)型的總結(jié)
按存儲(chǔ)空間的占用分(從低到高)
數(shù)字
字符串
集合:無(wú)序胞皱,即無(wú)序存索引相關(guān)信息? set()? {? }
元組:有序邪意,需要存索引相關(guān)信息,不可變? (? )
列表:有序朴恳,需要存索引相關(guān)信息,可變允蚣,需要處理數(shù)據(jù)的增刪改? [? ]
字典:無(wú)序于颖,需要存key與value映射的相關(guān)信息,可變嚷兔,需要處理數(shù)據(jù)的增刪改? {? }
按存值個(gè)數(shù)區(qū)分
標(biāo)量/原子類(lèi)型數(shù)字森渐,字符串
容器類(lèi)型列表,元組冒晰,字典
按可變不可變區(qū)分
可變列表同衣,字典
不可變數(shù)字,字符串壶运,元組耐齐,布爾值
按訪問(wèn)順序區(qū)分
直接訪問(wèn)數(shù)字
順序訪問(wèn)(序列類(lèi)型)字符串,列表蒋情,元組
key值訪問(wèn)(映射類(lèi)型)字典
四埠况,其他(for,enumerate棵癣,range)
for循環(huán):用戶按照順序循環(huán)可迭代對(duì)象的內(nèi)容
msg = '是全國(guó)范圍內(nèi)最好的'
for item in msg:
print(item)
li = ['alex','銀角','女神','egon','太白']
for i in li:
print(i)
dic = {'name':'太白','age':18,'sex':'man'}
for k,v in dic.items():
print(k,v)
enumerate:枚舉辕翰,對(duì)于一個(gè)可迭代的(iterable)/可遍歷的對(duì)象(如列表、字符串)狈谊,enumerate將其組成一個(gè)索引序列喜命,利用它可以同時(shí)獲得索引和值
li = ['alex','銀角','女神','egon','太白']
for i in enumerate(li):
print(i)
for index,name in enumerate(li,1):
print(index,name)
for index, name in enumerate(li, 100): # 起始位置默認(rèn)是0沟沙,可更改
print(index, name)
range:指定范圍,生成指定數(shù)字
for i in range(1,10):
print(i)
for i in range(1,10,2): # 步長(zhǎng)
print(i)
for i in range(10,1,-2): # 反向步長(zhǎng)
print(i)