Python基本數(shù)據(jù)類型

Python基本數(shù)據(jù)類型

在了解基本數(shù)據(jù)類型的時(shí)候,我們需要了解基本數(shù)據(jù)類型有哪些?數(shù)字int、布爾值bool、字符串str、列表list、元組tuple、字典dict等,其中包括他們的基本用法和其常用的方法,這里會(huì)一一列舉出來(lái),以便參考。然后我們還需要了解一些運(yùn)算符,因?yàn)檫@些基本數(shù)據(jù)類型常常會(huì)用于一些運(yùn)算等等。

一、運(yùn)算符

  運(yùn)算通常可以根據(jù)最終獲得的值不同,可以分兩類,即結(jié)果為具體的值,結(jié)果為bool值,那么哪些結(jié)果為具體的值-->算數(shù)運(yùn)算、賦值運(yùn)算,哪些結(jié)果又為bool值?--->比較運(yùn)算、邏輯運(yùn)算和成員運(yùn)算。

  1、算術(shù)運(yùn)算

  2、賦值運(yùn)算

  3、比較運(yùn)算

  4、邏輯運(yùn)算

  5、成員運(yùn)算

二、基本數(shù)據(jù)類型

1、數(shù)字? ---> int類

當(dāng)然對(duì)于數(shù)字,Python的數(shù)字類型有int整型、long長(zhǎng)整型、float浮點(diǎn)數(shù)、complex復(fù)數(shù)、以及布爾值(0和1),這里只針對(duì)int整型進(jìn)行介紹學(xué)習(xí)。

在Python2中,整數(shù)的大小是有限制的,即當(dāng)數(shù)字超過(guò)一定的范圍不再是int類型,而是long長(zhǎng)整型,而在Python3中,無(wú)論整數(shù)的大小長(zhǎng)度為多少,統(tǒng)稱為整型int。

其主要方法有以下兩種:

int -->將字符串?dāng)?shù)據(jù)類型轉(zhuǎn)為int類型,? 注:字符串內(nèi)的內(nèi)容必須是數(shù)字

1 #!/usr/bin/env python

2 # -*- coding:utf-8 -*-

3 s = '123'

4 i = int( s )

5 print( i)

bit_length() -->將數(shù)字轉(zhuǎn)換為二進(jìn)制,并且返回最少位二進(jìn)制的位數(shù)

#!/user/bin/env python

#-*- coding:utf-8 -*-

i =123

print( i.bit_length() )

#輸出結(jié)果為:

>>>5

2、布爾值? --->bool類

   ? 對(duì)于布爾值,只有兩種結(jié)果即True和False,其分別對(duì)應(yīng)與二進(jìn)制中的0和1。而對(duì)于真即True的值太多了,我們只需要了解假即Flase的值有哪些---》None、空(即 [ ]/( ) /" "/{ })、0;

#以下結(jié)果為假,即None、‘’、[]、()、{}以及 0

>>> bool(None)

False

>>> bool('')

False

>>> bool([])

False

>>> bool(0)

False

>>> bool(())

False

>>> bool({})

False

3、字符串? --->str類

關(guān)于字符串是Python中最常用的數(shù)據(jù)類型,其用途也很多,我們可以使用單引號(hào) ‘’或者雙引號(hào)“”來(lái)創(chuàng)建字符串。

字符串是不可修改的。所有關(guān)于字符我們可以從 索引、切片、長(zhǎng)度、遍歷、刪除、分割、清除空白、大小寫轉(zhuǎn)換、判斷以什么開頭等方面對(duì)字符串進(jìn)行介紹。

創(chuàng)建字符串

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#字符串的形式:使用‘’或者“”來(lái)創(chuàng)建字符串

name ='little_five'

print(name)

778570108群里有志同道合的小伙伴, 互幫互助。群里有視頻學(xué)習(xí)教程和PDF,一起學(xué)習(xí),共同進(jìn)步! 加群免費(fèi)獲取數(shù)十套PDF資料,助力python學(xué)習(xí)

切片

#獲取切片,復(fù)數(shù)代表倒數(shù)第幾個(gè),從0開始

>>> name ="little-five"

>>> name[1]

'i'

>>> name[0:-2] #從第一個(gè)到倒數(shù)第二個(gè),不包含倒數(shù)第二個(gè)

'little-fi'

索引--> index()、find()

#!/usr/bin/env python

# -*- coding:utf-8 -*-

name = "little_five"

#index-->獲取索引,第二個(gè)參數(shù)指定獲取該子字符或者子序列的第幾個(gè)

print(name.index("l",2)) #結(jié)果為 4

#find -->其作用與index相似

print(name.find("l",2))? #結(jié)果也為 4

? ? ? ? index()與find()的不同之處在于:若索引的該字符或者序列不在字符串內(nèi),對(duì)于index--》ValueError: substring not found,而對(duì)于find -->返回 -1。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

name = "little_five"

print(name.index("q",2))

#index--》輸出為:

>>>Traceback (most recent call last):

File "C:/Users/28352/PycharmProjects/learning/Day13/test.py", line 5, in <module>

print(name.index("q",2))

ValueError: substring not found

print(name.find("q",2))

#find--》輸出為:>>> -1

長(zhǎng)度 -->len()

name = "little_five"

#獲取字符串的長(zhǎng)度

print(len(name))

#輸出為:>>> 11

注:len()方法-->同樣可以用于其他數(shù)據(jù)類型,例如查看列表、元組以及字典中元素的多少。

刪除 --> del

#刪除字符串,也是刪除變量

>>> name ="little-five"

>>> del name

>>> name

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name 'name' is not defined

判斷字符串內(nèi)容 --> isalnum()、isalpha()、isdigit()

#判斷是否全為數(shù)字

>>> a ="123"

>>> a.isdigit()

True

>>> b ="a123"

>>> b.isdigit()

False

#判斷是否全為字母

>>> d ="alx--e"

>>> d.isalpha()

False

>>> c ="alex"

>>> c.isalpha()

True

#判斷是否全為數(shù)字或者字母

>>> e ="abc123"

>>> e.isalnum()

True

大小寫轉(zhuǎn)換 --> capitalize()、lower()、upper()、title()、casefold()

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#大小寫的互相轉(zhuǎn)換

>>> name ="little_five"

#首字母大寫-->capitalize

>>> name.capitalize()

'Little_five'

#轉(zhuǎn)為標(biāo)題-->title

>>> info ="my name is little_five"

>>> info.title()

'My Name Is Little_Five'

#全部轉(zhuǎn)為小寫-->lower

>>> name ="LITTLE_FIVE"

>>> name.lower()

'little_five'

#全部轉(zhuǎn)為大寫-->upper

>>> name = "little_five"

>>> name.upper()

'LITTLE_FIVE'

#大小寫轉(zhuǎn)換-->swapcase

>>> name ="lIttle_fIve"

>>> name.swapcase()

'LiTTLE_FiVE'

判斷以什么開頭結(jié)尾 --> startswith()、endswith()

#判斷以什么開頭、結(jié)尾

>>> name ="little-five"

#判斷以什么結(jié)尾

>>> name.endswith("e")

True

#判斷以什么開頭

>>> name.startswith("li")

True

? 擴(kuò)展-->expandtabs()

#expandtabs -->返回字符串中的 tab 符號(hào)('\t')轉(zhuǎn)為空格后生成的新字符串。通??捎糜诒砀窀袷降妮敵?/p>

info ="name\tage\temail\nlittlefive\t22\t994263539@qq.com\njames\t33\t66622334@qq.com"

print(info.expandtabs(10))

#輸出為:

name age email

little-five 22 994263539@qq.com

james 33 66622334@qq.com

格式化輸出-->format()、format_map()

#格式化輸出-->format、format_map

#forma方法

#方式一

>>> info ="my name is {name},I'am {age} years old."

>>> info.format(name="little-five",age=22)

"my name is little-five,I'am 22 years old."

#方式二

>>> info ="my name is {0},I'am {1} years old."

>>> info.format("little-five",22)

"my name is little-five,I'am 22 years old."

#方式三

>>> info ="my name is {name},I'am {age} years old."

>>> info.format(**{"name":"little-five","age":22})

"my name is little-five,I'am 22 years old."

#format_map方法

>>> info ="my name is {name},I'am {age} years old."

>>> info.format_map({"name":"little-five","age":22})

"my name is little-five,I'am 22 years old."

jion方法

#join--> join(): 連接字符串?dāng)?shù)組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個(gè)新的字符串

#字符串

>>> name ="littefive"

>>> "-".join(name)

'l-i-t-t-e-f-i-v-e'

#列表

>>> info = ["xiaowu","say","hello","world"]

>>> "--".join(info)

'xiaowu--say--hello--world'

分割 --> split()、partition()

#分割,有兩個(gè)方法-partition、split

#partition -->只能將字符串分為三個(gè)部分,生成列表

>>> name ="little-five"

>>> name.partition("-")

('little', '-', 'five')

#split-->分割字符串,并且可以指定分割幾次,并且返回列表

>>> name ="little-five-hello-world"

>>> name.split("-")

['little', 'five', 'hello', 'world']

>>> name.split("-",2)? #指定分割幾次

['little', 'five', 'hello-world']

替代 -->replace

#替代

>>> name ="little-five"

>>> name.replace("l","L")

'LittLe-five'

#也可以指定參數(shù),替換幾個(gè)

>>> name.replace("i","e",2)

'lettle-feve'

清除空白 --> strip()、lstrip()、rstrip()

#去除空格

>>> name ="? little-five ? "

#去除字符串左右兩邊的空格

>>> name.strip()

'little-five'

#去除字符串左邊的空格

>>> name.lstrip()

'little-five ? '

#去除字符串右邊的空格

>>> name.rstrip()

'? little-five'

替換 -->makestran 、translate

1 #進(jìn)行一一替換

2 >>> a ="wszgr"

3 >>> b="我是中國(guó)人"

4 >>> v =str.maketrans(a,b) #創(chuàng)建對(duì)應(yīng)關(guān)系,并且兩個(gè)字符串長(zhǎng)度要求一致

5 >>> info ="I'm a Chinese people,wszgr"

6 >>> info.translate(v)

7 "I'm a Chine是e people,我是中國(guó)人"

4、列表? --->list類

列表是由一系列特定元素順序排列的元素組成的,它的元素可以是任何數(shù)據(jù)類型即數(shù)字、字符串、列表、元組、字典、布爾值等等,同時(shí)其元素也是可修改的。

其形式為:

1 names = ['little-five","James","Alex"]

2 #或者

3 names = list(['little-five","James","Alex"])

索引、切片

1 #索引-->從0開始,而不是從一開始

2 name =["xiaowu","little-five","James"]

3 print(name[0:-1])

4 #切片-->負(fù)數(shù)為倒數(shù)第幾個(gè),其為左閉右開,如不寫,前面表示包含前面所有元素,后面則表示后面所有元素

5 m1 =name[1:]

6 print(m1)

7 #輸出為-->['little-five', 'James']

8 m2 =name[:-1]

9 print(m2)

10 #輸出為-->['xiaowu', 'little-five']

追加-->append()

1 #追加元素-->append()

2 name =["xiaowu","little-five","James"]

3 name.append("alex")

4 print(name)

5 #輸出為--》['xiaowu', 'little-five', 'James', 'alex']

拓展-->extend()

1 #擴(kuò)展--》其將字符串或者列表的元素添加到列表內(nèi)

2 #一、將其他列表元素添加至列表內(nèi)

3 name =["xiaowu","little-five","James"]

4 name.extend(["alex","green"])

5 print(name)

6 #輸出為-->['xiaowu', 'little-five', 'James', 'alex', 'green']

7 #二、將字符串元素添加到列表內(nèi)

8 name =["xiaowu","little-five","James"]

9 name.extend("hello")

10 print(name)

11 #輸出為-->xiaowu', 'little-five', 'James', 'alex', 'green', 'h', 'e', 'l', 'l', 'o']

12 #三、將字典元素添加至列表內(nèi),注:字典的key。

13 name =["xiaowu","little-five","James"]

14 name.extend({"hello":"world"})

15 print(name)

注:擴(kuò)展extend與追加append的區(qū)別:-->前者為添加將元素作為一個(gè)整體添加,后者為將數(shù)據(jù)類型的元素分解添加至列表內(nèi)。例:

1 #extend-->擴(kuò)展

2 name =["xiaowu","little-five","James"]

3 name.extend(["hello","world"])

4 print(name)

5 輸出為-->['xiaowu', 'little-five', 'James', 'hello', 'world'] ?

6 #append -->追加

7 name.append(["hello","world"])

8 print(name)

9 輸出為 -->['xiaowu', 'little-five', 'James', ['hello', 'world']]

insert() -->插入

1 #insert()插入-->可以指定插入列表的某個(gè)位置,前面提到過(guò)列表是有序的

2 name =["xiaowu","little-five","James"]

3 name.insert(1,"alex") #索引從0開始,即第二個(gè)

4 print(name)

pop() -->取出

1 #pop()--取出,可將取出的值作為字符串賦予另外一個(gè)變量

2 name =["xiaowu","little-five","James"]

3 special_name =name.pop(1)

4 print(name)

5 print(special_name,type(special_name))

6 #輸出為:['xiaowu', 'James']

7 #little-five <class 'str'> ? ?

remove()-->移除、del -->刪除

1 #remove -->移除,其參數(shù)為列表的值的名稱

2 name =["xiaowu","little-five","James"]

3 name.remove("xiaowu")

4 print(name)

5 #其輸出為:['little-five', 'James']

6 #del -->刪除

7 name =["xiaowu","little-five","James"]

8 #name.remove("xiaowu")

9 del name[1]

10 print(name)

11 #其輸出為:['xiaowu', 'James']

sorted()-->排序,默認(rèn)正序,加入reverse =True,則表示倒序

1 #正序

2 num =[11,55,88,66,35,42]

3 print(sorted(num)) -->數(shù)字排序

4 name =["xiaowu","little-five","James"]

5 print(sorted(name)) -->字符串排序

6 #輸出為:[11, 35, 42, 55, 66, 88]

7 #['James', 'little-five', 'xiaowu']

8 #倒序

9 num =[11,55,88,66,35,42]

10 print(sorted(num,reverse=True))

11 #輸出為:[88, 66, 55, 42, 35, 11]

5、元組? --->tuple類

元組即為不可修改的列表。其于特性跟list相似。其使用圓括號(hào)而不是方括號(hào)來(lái)標(biāo)識(shí)。

#元組

name = ("little-five","xiaowu")

print(name[0])

6、字典? --->dict類

字典為一系列的鍵-值對(duì),每個(gè)鍵值對(duì)用逗號(hào)隔開,每個(gè)鍵都與一個(gè)值相對(duì)應(yīng),可以通過(guò)使用鍵來(lái)訪問(wèn)對(duì)應(yīng)的值。無(wú)序的。

鍵的定義必須是不可變的,即可以是數(shù)字、字符串也可以是元組,還有布爾值等,而值的定義可以是任意數(shù)據(jù)類型。

#字典的定義

info ={

1:"hello world",? #鍵為數(shù)字

("hello world"):1, #鍵為元組

False:{"name":"James"},

"age":22} ? ?

遍歷 -->items、keys、values

info ={

"name":"little-five",

"age":22,

"email":"99426353*@qq,com"}

#鍵

for key in info:

print(key)

print(info.keys())

#輸出為:dict_keys(['name', 'age', 'email'])

#鍵值對(duì)

print(info.items())

#輸出為-->dict_items([('name', 'little-five'), ('age', 22), ('email', '99426353*@qq,com')])

#值

print(info.values())

#輸出為:dict_values(['little-five', 22, '99426353*@qq,com'])

7、集合 -->set類

關(guān)于集合set的定義:在我看來(lái)集合就像一個(gè)籃子,你可以往里面存東西也可往里面取東西,但是這些東西又是無(wú)序的,你很難指定單獨(dú)去取某一樣?xùn)|西;同時(shí)它又可以通過(guò)一定的方法篩選去獲得你需要的那部分東西。故集合可以 創(chuàng)建、增、刪、關(guān)系運(yùn)算。

集合的特性:

1、去重

2、無(wú)序

3、每個(gè)元素必須為不可變類型即(hashable類型,可作為字典的key)。

創(chuàng)建:set、frozenset

1 #1、創(chuàng)建,將會(huì)自動(dòng)去重,其元素為不可變數(shù)據(jù)類型,即數(shù)字、字符串、元組

2 test01 ={"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True}

3 #或者

4 test02 =set({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})

5 #2、不可變集合的創(chuàng)建 -->frozenset()

6 test =frozenset({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})

增:? add、update

#更新單個(gè)值 --->add

names ={"zhangsan","lisi","wangwu"}

names.add("james") #其參數(shù)必須為hashable類型

print(names)

#更新多個(gè)值 -->update

names ={"zhangsan","lisi","wangwu"}

names.update({"alex","james"})#其參數(shù)必須為集合

print(names)

刪除:pop、remove、discard

#隨機(jī)刪除 -->pop

names ={"zhangsan","lisi","wangwu","alex","james"}

names.pop()

print(names)

#指定刪除,若要?jiǎng)h除的元素不存在,則報(bào)錯(cuò) -->remove

names ={"zhangsan","lisi","wangwu","alex","james"}

names.remove("lisi")

print(names)

#指定刪除,若要?jiǎng)h除的元素不存在,無(wú)視該方法 -->discard

names ={"zhangsan","lisi","wangwu","alex","james"}

names.discard("hello")

print(names)

關(guān)系運(yùn)算:交集 & 、并集 | 、差集 - 、交差補(bǔ)集 ^ 、 issubset 、isupperset

比如有兩個(gè)班英語(yǔ)班和數(shù)學(xué)班,我們需要統(tǒng)計(jì)這兩個(gè)班中報(bào)名情況,例如既報(bào)名了英語(yǔ)班有報(bào)名數(shù)學(xué)班的同學(xué)名字等等,這時(shí)候我們就可以應(yīng)用到集合的關(guān)系運(yùn)算:

english_c ={"ZhangSan","LiSi","James","Alex"}

math_c ={"WangWu","LiuDeHua","James","Alex"}

#1、交集-->? in a and in b

#統(tǒng)計(jì)既報(bào)了英語(yǔ)班又報(bào)了數(shù)學(xué)班的同學(xué)

print(english_c & math_c)

print(english_c.intersection(math_c))

#輸出為:{'Alex', 'James'}

#2、并集--> in a or in b

#統(tǒng)計(jì)報(bào)名了兩個(gè)班的所有同學(xué)

print(english_c | math_c)

print(english_c.union(math_c))

#輸出為:{'James', 'ZhangSan', 'LiuDeHua', 'LiSi', 'Alex', 'WangWu'}

#3、差集--> in a not in b

#統(tǒng)計(jì)只報(bào)名英語(yǔ)班的同學(xué)

print(english_c - math_c)

print(english_c.difference(math_c))

#輸出為:{'LiSi', 'ZhangSan'}

4、交差補(bǔ)集

#統(tǒng)計(jì)只報(bào)名一個(gè)班的同學(xué)

print(english_c ^ math_c)

#輸出為:{'LiuDeHua', 'ZhangSan', 'WangWu', 'LiSi'}

判斷兩個(gè)集合的關(guān)系是否為子集、父集 -->? issubset 、isupperset

#5、issubset-->n 是否為 m 的子集

# ? issuperset --> n 是否為 m 的父集

n ={1,2,4,6,8,10}

m ={2,4,6}

l ={1,2,11}

print(n >= m)

#print(n.issuperset(m)) #n 是否為 m的父集

#print(n.issuperset(l))

print(m <=n) ? ?

#print(m.issubset(n)) ?? #m 是否為 n的子集

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容