在今天和明天之間措伐,有一段很長(zhǎng)的時(shí)間特纤;趁你還有精神的時(shí)候,學(xué)習(xí)迅速辦事侥加∨醮妫——歌德
python基本數(shù)據(jù)類型包括:數(shù)字、字符串担败、布爾值昔穴、列表、元組提前、字典吗货。
一、數(shù)字()
int()方法:
1狈网、將字符串轉(zhuǎn)換為數(shù)字:
a='123'
b=int(a)
2宙搬、進(jìn)制之間的轉(zhuǎn)換:
例:num='0011'
c=int(num,base=16) 表示16進(jìn)制的num轉(zhuǎn)換為10進(jìn)制的數(shù)字
bit_length()方法:
當(dāng)前數(shù)字的2進(jìn)制,至少用n位來(lái)表示
例:age=1? ?2進(jìn)制表示01
r=age.bit_length()? ? ?所以r=1
age=2? ?用2進(jìn)制表示10
r=age.bit_length()? ? ?所以r=2
age=4? ?用2進(jìn)制表示100
r=age.bit_length()? ? ?所以r=3
二拓哺、字符串
字符串是不可以被修改的勇垛,它會(huì)被創(chuàng)建新元素,開辟新內(nèi)存士鸥。
常見(jiàn)的字符串方法:
移除空白
分割
長(zhǎng)度
索引
切片
例子:
#參數(shù)只有一個(gè)self可以默認(rèn)不寫參數(shù)闲孤,但若還有其他的,第二個(gè)參數(shù)必寫础淤,后面的可寫可不寫崭放,寫了可以按照條件去執(zhí)行
name='listen'
a=name.capitalize()
print(a) #首字母變大寫
#-----------------------------
name='alex'
a=name.ljust(20,'*')#用*從左往右補(bǔ)全20個(gè)字符
b=name.rjust(10,' ')#用空格從右向左補(bǔ)全10個(gè)字符
?print(b)
#$$$$$$$$$$$$$
name='listen'
a=name.center(20,'*')
print(a)? #*******listen******* 占20個(gè)位哨苛,‘*’填補(bǔ),若不寫這個(gè)參數(shù)币砂,已空格來(lái)填補(bǔ)
?a=name.zfill(10)
?print(a)? ? #用0左填充補(bǔ)齊字符
#----------------------------------------
name='listensdsdd'
?a=name.count('s') #s的個(gè)數(shù)
b=name.count('s',5) #從索引為第5個(gè)位置找
?c=name.count('s',5,7)#從5找到7
?print(c)
#--------------------------------------------
?name='listen'
a=name.startswith('a')
?c=name.startswith('s',2)
?b=name.endswith('n')
d=name.endswith('e',1,5)#[1,5)
?print(a) #bool類型建峭,返回false
?print(b)#true
?print(c)
?print(d)
#--------------------------------------------
information='name\tage\tsex\tgrade\nlisten\t13\tmale\tgood\nlisten\t13\tmale\tgood\nlisten\t13\tmale\tgood\n'
a=information.expandtabs(10)? ? ?#將10字符分為一組,遇到\t補(bǔ)全10字符决摧,默認(rèn)一個(gè)tab轉(zhuǎn)換為8個(gè)空格亿蒸,也可以根據(jù)自己需要添加空格的值,一個(gè)\n為換行符掌桩,這樣可以制作左對(duì)齊表格
print(a)
# """
name? ? ? age? ? ? sex? ? ? grade
?listen? ? 13? ? ? ? male? ? ? good
?listen? ? 13? ? ? ? male? ? ? good
?listen? ? 13? ? ? ? male? ? ? good
# """
#--------------------------------------------------
name='listen'
a=name.find('s')
?b=name.find('s',3)
?c=name.find('e',3,5)
?d=name.index('s',3)#找不到會(huì)報(bào)錯(cuò)边锁,不建議用這個(gè),建議用find
?print(a)#找索引位置2
?print(b) #沒(méi)找到返回-1
?print(c)? #4
?print(d)
#---------------------------------------------
#字符串的格式化
?troduce='I am {name},{age} years old'
?a=troduce.format(name='listen',age=13)
?print(a)
troduce='I am {0},{1} years old'
?a=troduce.format('listen',13) #跟上面一一對(duì)應(yīng)
?print(a)
#------------------------------------------------
name='asc123'
?a=name.isalnum()? ? #是否是字母或者數(shù)字
?b=name.isalpha()? ? #是否全部是字母
c=name.isdigit()? ? ? #是否全為數(shù)字(厲害)②
d=name.isdecimal()? ?#是否全為數(shù)字(十進(jìn)制的小數(shù))2
e=name.isnumeric()? ? #是否為數(shù)字(最厲害波岛,中文的二都認(rèn)識(shí))二
print(a) #True
?print(b) #False
?print(c)#False
#----------------------------------------------
?name='listen'
a=name.islower() #是否為小寫
print(a)
?name1='LiStEn'
?b=name1.lower() #把字符串變?yōu)樾?/p>
c=name1.upper() #把字符串變?yōu)榇髮?/p>
print(b)
print(c)
#---------------------------------------
name='adcc\t'
?a=name.isprintable()
?print(a)#是否有不可以顯示出的字符\t制表符 \n換行符 都是顯示不出來(lái)
#------------------------------------------
?name='? '
a=name.isspace() #是否全為空格茅坛,空字符串也是false
?print(a)
#---------------------------------------------
?name='listen is a good student'
a=name.istitle()#判斷是否為標(biāo)題的依據(jù)是是否句子首字母為大寫
?b=name.title() #變?yōu)闃?biāo)題
?c=b.istitle()
?print(c)
#----------------------------------------
#********很重要
name='nihao'
?t=' '
?a=t.join(name)
?b='*'.join(name) #用*把名字的字符拼接起來(lái)
?print(b)
#-----------------------------------------
name='? ? listen? '
al='acv\neg\t'
?dl='\tssafgdas'
a=name.strip()#把左右空格、換行符则拷、制表符都移除
print(al.strip())
?b=name.lstrip()#把左邊的空格移除
c=name.rstrip()#把右邊的空格移除,從又第一個(gè)字母開始找贡蓖,有的話移除
print(dl.rstrip('a'))
?print(dl)
?v=dl.strip()
?print(v)
print(c)
#----------------------------------------------------
?name='alexsslefgs'
?a=name.partition('s') #按要求分割成三部分包含分隔符
?a=name.rpartition('s')#從右分割為三部分
a=name.split('s') #按要求分割,有幾部分分幾部分煌茬,但是不包含分隔符
a=name.rsplit('s')#從右分割
?print(a)
#-------------------------------------------------------
?a='asdfg\nwett\nhed\nd'
v=a.splitlines() #根據(jù)換行符進(jìn)行分割成list
?print(v)
#---------------------------------------------------
?name='alexjennyADDkiDoHeLLo'
v=name.swapcase()
print(v)#小寫和大寫之間的相互轉(zhuǎn)換(小變大斥铺,大變小)
#----------------------------------------------------
?intab='abcdefg'
?outab='1234567'
?s='abcdefgabcdefg'
?a=trantab=maketrans(intab,outab)
s.translate(trantab)
?print(a)? ? ? ?#轉(zhuǎn)換
#------------------------------------------------------ 140 #s='alexjennyailalisa'
v=s.replace('a','m',4)#讓m替換a坛善,替換的個(gè)數(shù)為4 142 #print(v)
三晾蜘、bool布爾值
真或假(1或0)
四、列表
列表中的元素可以是任意類型眠屎,是一個(gè)集合剔交。
列表中的元素可以被修改。
基本操作:
L=['alex','jenny','danny','liming']
索引:index()
切片:L[]
追加:append()
刪除:pop()和remove()? ?del L[2:4]
長(zhǎng)度:len(L)
循環(huán):for x in L:
包含:'alex' in L
例子:
# _*_ encoding:utf-8 _*_
__author__ ='listen'
__date__ ='2019/5/9 10:16'
#_*_ encoding:utf-8 _*_
list=['jenny','danny','alex','steven','alex']
#---------------------------------------------方法
list.append('listen')#在原值后追加 list.append([1,2])
print(list)#['jenny', 'danny', 'alex', 'steven', 'alex', 'listen']
# #------------------------------
b=list.count('alex')#2 計(jì)數(shù)
print(b)
# #----------------------------------
list1=['nihao','hi']
print(list+list1)#['jenny', 'danny', 'alex', 'steven', 'alex', 'nihao', 'hi']
list.extend(list1)#擴(kuò)展必須是可迭代對(duì)象(在內(nèi)部執(zhí)行的for循環(huán))
print(list)#['jenny', 'danny', 'alex', 'steven', 'alex', 'listen', 'nihao', 'hi']
# #---------------------------------------
print(list.index('danny'))#1 根據(jù)值獲取當(dāng)前值索引的位置
#---------------------------------------
list.insert(0,'name')#在某位置插入某個(gè)元素
print(list)#['name', 'jenny', 'danny', 'alex', 'steven', 'alex']
#--------------------------------------
list.pop(0)#返回被刪除的值
print(list)#['danny', 'alex', 'steven', 'alex'] 沒(méi)有參數(shù)默認(rèn)是移除最后一個(gè)元素改衩,有參數(shù)按照參數(shù)指定位置(索引)移除元素
#---------------------------------------
list.remove('jenny')
print(list)#把指定值移除 刪除左邊優(yōu)先
#------------------------------------------
list.reverse()
print(list)#把列表中的元素倒敘輸出省容,回文 ['alex', 'steven', 'alex', 'danny', 'jenny']
#-------------------------------------------
list.sort()
print(list)#對(duì)原列表進(jìn)行排序,默認(rèn)英文字母排序(升序),可以設(shè)置參數(shù)reverse=True是降序
#------------------------(--------------------
print(list[2:])#切片 第三個(gè)元素到最后
print(list[-1])#取最后一個(gè)元素
print(list[1:3])#[1,3)
print(list[1] )#取第二個(gè)元素
print(len(list))#list的長(zhǎng)度
a=['hi']
print(a*3 )#['hi', 'hi', 'hi']
print('hi' in a)#True? 'hi'在列表a中嗎燎字? 包含
for xin list:
print(x)#可迭代
#----------------------------------------------------函數(shù)
list2=['how','are','you']
list3=['ni','hao','ya']
print(cmp(list2,list3))#比較兩個(gè)列表的大小asci對(duì)應(yīng)的-? 1(右邊的)? 0 (平局) 1 (左邊的)
print(max(list))#steven
print(min(list))
tuple1=(1,2,3,4,5)
print(list(tuple1))#[1, 2, 3, 4, 5]? list()函數(shù) tuple轉(zhuǎn)為list
五、元組
元組基本操作:
索引---根據(jù)索引取值
切片---根據(jù)切片取值
循環(huán)---for 循環(huán)
長(zhǎng)度---len()
包含---in
例子:?
?s='awegjslfjjnjf'
s1=list(s)? ? ?#可迭代才可以用list()方法轉(zhuǎn)換成列表(內(nèi)部使用for循環(huán))---字符串轉(zhuǎn)換為列表
?print(s1)
?L=['alex','hello','hi',123,34,24]
str(L)整體轉(zhuǎn)換為字符串阿宅,也就是說(shuō)在L外面加了一個(gè)'l'
1列表轉(zhuǎn)換為字符串--需要自己寫for循環(huán)(既有數(shù)字又有字符串)
?s2=''
?for i in L:
? ? ?s2+=str(i)
?print(s2)? #'alexhellohi1233424'
#2如果列表中都是字符串候衍,么有整型
?L1=['alex','hello','hi']
?s=''.join(L1)
?print(s)
1 清空列表
li=[1,2,3,4,5]
?li.clear()
?print(li) #清空列表
2 拷貝 淺拷貝
?v=li.copy()
?print(v) #淺淺的拷貝了一下
3del 刪除 remove pop clear
?del li[0:3]
?print(li) #L=[4, 5]
列表是有序的,元素可以被修改
1元組洒放,元素不能被修改蛉鹿,不能增加、刪除和修改(對(duì)列表的第二次加工 )
一般寫元組的時(shí)候往湿,推薦最好在最后一個(gè)元素加一個(gè)逗號(hào)
#通過(guò)索引取值
?tu=(1,2,3,'a','b')
2妖异、索引
?v=tu[0]
?print(v)? #1
3惋戏、切片
v=tu[1:]
print(v) #(2, 3, 'a', 'b')
4、循環(huán)(遍歷他膳、迭代)為可迭代對(duì)象
?for item in tu:
? ? ?print(i)
5响逢、轉(zhuǎn)換(可迭代對(duì)象)
?s='abcdef'
li=['a','b','c']
tu=('f','s')
#字符串到列表
?v=list(s)
?print(v)#['a', 'b', 'c', 'd', 'e', 'f']
#列表到字符串
?v=''.join(li)
?print(v) #'abc'
#字符串到元組
?v=tuple(s)
?print(v) #('a', 'b', 'c', 'd', 'e', 'f')
#元組到字符串
?v='_'.join(tu)
?print(v) #f_s
#列表到元祖
?v=tuple(li)
print(v)#('a', 'b', 'c')
#元組到列表
?v=list(tu)
?print(v) #['f', 's']
6、元組棕孙、有序
元組的第一級(jí)元素是不可被修改的
?tu=(11,22,'alex',([1,2],),('a','b'),True,99,22)
v=tu[3][0][1]
?tu[3][0][1]=8? #(11, 22, 'alex', ([1, 8],), ('a', 'b'), True, 99)
?print(tu) #2
tu[3][0]=2
?print(tu)? 錯(cuò)誤的做法
#建議在元組的最后一個(gè)元素加上逗號(hào)舔亭,方便確認(rèn)是元組
#方法
1、count()該值出現(xiàn)的次數(shù)
v=tu.count(22)
?print(v)? #2
2蟀俊、index()該值索引的位置
v=tu.index(22)
?print(v)? #1從左到右找
六钦铺、字典
字典是鍵值對(duì)組成的
字典基本操作:
索引:dic['key']
新增:update()更新,有參數(shù)的鍵值對(duì),就按照參數(shù)更新肢预,如果沒(méi)有矛洞,就新增鍵值對(duì)? ? ? ? ? ? ? ? ? ? setdefault()字典中有設(shè)置的默認(rèn)的參數(shù)(已存在,不設(shè)置)烫映,返回的是字典中的參數(shù)和所對(duì)應(yīng)的值沼本,設(shè)置默認(rèn)參數(shù)字典中沒(méi)有的,則返回默認(rèn)鍵所對(duì)應(yīng)的值,并把設(shè)置的添加到字典中(不存在窑邦,新添設(shè)置)
刪除:del dic['key1']? ? pop()刪除指定元素? ? popitem()隨意刪除一組鍵值對(duì)
鍵擅威、值、鍵值對(duì): keys()? ?values()? ? items()
循環(huán):for
長(zhǎng)度:len()
例子:
1冈钦、基本結(jié)構(gòu)
info={
? ? ?'k1':'v1',
? ?'k2':'v2'
}
2? 字典的值可以值任意類型的
3? 列表郊丛、字典不能作為字典的key,元組可以作為字典的key? hash? true :1? false :0
4? 字典是無(wú)序的
5瞧筛、通過(guò)索引方式找到元素
?info={
? ?'k1':1,
? ?'k2':2,
? ? ?'k3':3,
? ? ?1:'a',
?(1,2,3):[1,88,9],
? ?'k5':[
? ? ?1,2,3,{
? ? ? ? ? ?'kk1':'3',
? ? ? ? ? ? 'kk2':(11,12)
? ? ? ?}
? ? ]
#
# }
v=info['k5'][3]['kk2'][1]
?print(v) #12
6? 刪除字典中的元素
?del info['k1']
print(info)
7 支持 for 循環(huán)
?for item in info.keys():
? ?print(item)? ? #取key? 默認(rèn)是key
?for item in info.values():
? ?print(item)? ? ?# 取value
for k,v in info.items():
? ? print(k,v)
#方法 1厉熟、取出字典的key,并設(shè)置默認(rèn)值為none,若有第2個(gè)參數(shù)较幌,則為key的值
?dic={'k1':'v1',
? ? 'k2':'v2'
? ? }
v=dict.fromkeys(dic,1)
?print(v)
2揍瑟、通過(guò)get方法取值,若沒(méi)有輸入的key乍炉,則會(huì)返回none绢片,不會(huì)報(bào)錯(cuò)
v=dic.get('k11')
print(v)? ? ?#none
3、items()返回的是一個(gè)list
?v=dic.items()
?print(v)? ? ? #dict_items([('k1', 'v1'), ('k2', 'v2')])
4岛琼、pop 刪除指定的鍵值對(duì)底循,返回被刪除鍵的值,popitem()沒(méi)有參數(shù),會(huì)隨意刪除字典中一個(gè)鍵值對(duì)槐瑞,返回被刪除的鍵值對(duì)的元組
dic={'k1':'v1',
? ? ?'k2':'v2'
? ? }
?v=dic.pop('k1')
?print(dic,v)? ? #{'k2': 'v2'} v1
? v=dic.popitem()
print(dic,v)? ? ? ? # {'k1': 'v1'} ('k2', 'v2')
5熙涤、setdefault 中的參數(shù),字典中有設(shè)置的默認(rèn)的參數(shù)(已存在,不設(shè)置)祠挫,返回的是字典中的參數(shù)和所對(duì)應(yīng)的值那槽,設(shè)置默認(rèn)參數(shù)字典中沒(méi)有的,則返回默認(rèn)鍵所對(duì)應(yīng)的值,并把設(shè)置的添加到字典中(不存在等舔,新添設(shè)置)
dic={'k1':'v1',
? ? ?'k2':'v2'
? ? }
?v=dic.setdefault('k1',1)
?v1=dic.setdefault('k111',88)
print(dic,v)? #{'k1': 'v1', 'k2': 'v2'} v1
?print(dic,v1) #{'k1': 'v1', 'k2': 'v2', 'k111': 88} 88
#6更新字典
?dic={'k1':'v1',
? ? ?'k2':'v2'
? ? }
?① dic.update({'k1':123,'k3':'hi'})
print(dic)? #{'k1': 123, 'k2': 'v2', 'k3': 'hi'}
② dic.update(k1=123,k3='hi')
?print(dic)? #{'k1': 123, 'k2': 'v2', 'k3': 'hi'}
7 keys() 8? values()? items()? get? update? 常用的
七骚灸、小結(jié)
總結(jié)基本的數(shù)據(jù)類型常見(jiàn)的用法:
?一、數(shù)字
int(...)
二软瞎、字符串
#replace/find/join/strip/startswith/split/upper/lower/format
ep='I am {name},age:{age}'
?v=ep.format(name='alex',age=17)
v=ep.format(**{'name':'alex','age':17})
?print(v)
三逢唤、列表
append、extend涤浇、insert
#索引鳖藕、切片、循環(huán)
四只锭、元組
#忽略
#索引著恩、切片、循環(huán)? 一級(jí)元素不能被修改
五蜻展、字典
get/update/keys/values/items
for,索引
六喉誊、布爾值
0? 1
#bool(...)
None? ''? {}? ? []? ? ()? ====>> False? 其他為真
以上就是小猿圈python的六種基本數(shù)據(jù)類型,建議大家也可以按照例子去練習(xí)纵顾,有什么不懂的地方伍茄,可以隨時(shí)關(guān)注小猿圈自學(xué)網(wǎng),里面有很多視頻幫助你去學(xué)習(xí)哦~~