前言:基本類型是需要掌握的,是編程基礎(chǔ)。不理解沒關(guān)系,死記住就好了,就像你小時(shí)候背9*9乘法表也不需要為什么。
Python的基本數(shù)據(jù)類型有 數(shù)字,字符串,列表,元組,字典,集合;
一:數(shù)字
Python3 數(shù)字類型支持 int(長整型)、float(浮點(diǎn)型)、bool、complex(復(fù)數(shù))。其中的bool為True(等同于數(shù)字1),或者False(等同于數(shù)字0),可以進(jìn)行數(shù)值運(yùn)算;
使用type()函數(shù)和isinstance()可以查看對(duì)象類型:
print(type(1), type(1.5), type(True), type(5 + 3j))
print(isinstance(1,int),isinstance(True,int),isinstance(True,bool))
print(True + 1,False+1)
結(jié)果為:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
True True True
2 1
數(shù)值運(yùn)算
①加法用 +,減法用 -,乘法用 *,乘方用**;
②關(guān)于除法有兩種:\ 和 \\,前者表示結(jié)果為浮點(diǎn)數(shù),后者表示結(jié)果為整型
print(9/2,9//2,10/3,10//3)
結(jié)果為
4.5 4 3.3333333333333335 3
二:字符串
用單引號(hào) ' 或雙引號(hào) " 括起來的任意文本即為字符串,字符串中的特殊字符要使用 \ 來轉(zhuǎn)義。
①轉(zhuǎn)義
字符串中含有如特殊字符需要轉(zhuǎn)義,比如 \' , \" ,\n,\t等,他自身\ 也需要轉(zhuǎn)義。
print("I'm \n \"ok\" \n \\ \n \\")
輸出
I'm
"ok"
\
\
使用 r ' '可以使字符串中的字符不轉(zhuǎn)義,原樣輸出。
print(r"I'm \n \"ok\" \n \\ \n \\")
輸出:
I'm \n \"ok\" \n \\ \n \\
②格式化
三種方式 % f, format:
name = 'tom'
mobile = 1388888888
print('%s 的手機(jī)號(hào)碼是 %s' % (name, mobile))
print('{} 的手機(jī)號(hào)碼是 {}'.format(name, mobile))
print(f'{name} 的手機(jī)號(hào)碼是 {mobile}') #3.6支持
輸出為
tom 的手機(jī)號(hào)碼是 1388888888
tom 的手機(jī)號(hào)碼是 1388888888
tom 的手機(jī)號(hào)碼是 1388888888
③常見方法
find(),join (),split (),replace (),strip ()等等,遇到再翻資料;
三:布爾值
布爾值本質(zhì)上0(False)和1(True),運(yùn)算有and,or,not
print(True and True) # and是與運(yùn)算,兩邊都為True,最終結(jié)果才是True
print(True or False) # or是或運(yùn)算,一邊為True,最終結(jié)果即是True
print(not False) # not是非運(yùn)算,取反
結(jié)果為
True
True
True
最后,在判斷條件中,None,"",(),[],{},0均代表Fasle:
if not '' or None or () or [] or {} or 0 or False:
print("均為假")
輸出
均為假
因?yàn)?' ' or None or () or [] or {} or 0 or False ,整體為False,所以not False為True,才能執(zhí)行方法體中print。or運(yùn)算中全為False才能整體為False。
四:列表(list)
list為可變的,有序的集合。即長度可變,元素排列有序;但元素類型可以不一致
①定義一個(gè)list:使用 [ ]
list = ['A', 'B', 666, True]
print(len(list)) # len()得到list長度,即元素個(gè)數(shù)
②對(duì)元素操作:
通過list[n],n范圍為0~len(list)-1,本例中n可取值0,1,2,3,(如果倒著數(shù),最后一個(gè)元素下標(biāo)為-1)超過這個(gè)范圍會(huì)跑出數(shù)組越界 IndexError 錯(cuò)誤
(1)獲取元素,元素賦值
print(list[0])
print(list[1])
print(list[2])
print(list[3])
# print(list[4]) IndexError
print("----------")
print(list[-1])
print(list[-2])
print(list[-3])
print(list[-4])
# print(list[-5]) IndexError
list[0] = "888" # 通過元素下標(biāo)可以修改元素
print(list)
輸出
A
B
666
True
----------
True
666
B
A
['888', 'B', 666, True]
(2)增減元素
# 增減元素
list.append("append") # append追加到末尾
print(list)
list.insert(0, 'insert') # insert插入到指定位置
print(list)
list.pop() # 刪除末尾
print(list)
#pop可以接收刪除的元素并繼續(xù)使用
list.pop(0) # 刪除指定位置,
print(list)
輸出:
['888', 'B', 666, True, 'append']
['insert', '888', 'B', 666, True, 'append']
['insert', '888', 'B', 666, True]
['888', 'B', 666, True]
(3)list嵌套
list元素也可以是另一個(gè)list。
list = ['A', 'B', ['c', 'd']],#注意list的長度為3,看成是一個(gè)二維數(shù)組
# 拆解list為 l1,l2
l1 = ['c', 'd']
l2 = ['A', 'B', l1]
print(list)
print(l2)
#獲取子list中的元素
print(list[2][1])
print(l1[1])
輸出:
['A', 'B', ['c', 'd']]
['A', 'B', ['c', 'd']]
d
d
五:元組(tuple)
tuple用 ( )來表示。
tuple和list都是python內(nèi)置的有序的集合,區(qū)別是前面的列表list是可變的,而元組tuple是不可變的。
既然是不可變的,那么tuple,只提供了獲取元素的方法,其他類似append,pop,insert之類都是沒有的。
t = (1, 2, 3) # 一旦初始化,不可更改,元素在初始化的時(shí)候定義
print(t[0])
print(t[2])
print(t[3]) #IndexError
注意:當(dāng)tuple只有1個(gè)元素的時(shí)候,為了區(qū)分()是為了定義tuple還是數(shù)學(xué)意義的括號(hào),需要加“ ,” 區(qū)分。
t = (1) # int 類型 1
print(t)
t = (1,)# tuple
print(t)
輸出:
1
(1,)
當(dāng)tuple內(nèi)部有個(gè)可變的列表list的時(shí)候,tuple的元素是可以變化的。這和tuple的“不可變”并不沖突。
t = ('a', 'b', ['A', 'B'])
t[2][0]='X'
t[2][1]='Y'
print(t) #輸出為 ('a', 'b', ['X', 'Y'])
搬個(gè)圖解釋:


不可變指的是:tuple元素的引用指向不可變(可以理解為地址不改變),但是這個(gè)引用指向的內(nèi)容是可變的。對(duì)應(yīng)例中,t[2]的引用在初始化后就不變了,就可以可理解為t本身就不可變。至于t[2]本身內(nèi)容是什么,變不變,t 本身并不關(guān)心。
六:字典dict
dict全稱dictionary,是一種使用key-value ( 鍵值對(duì) ) 的類型。優(yōu)點(diǎn),查找快。
①定義
(1):初始化的時(shí)候定義元素:
d = {'小王': 10, '大王': 20, '老王': 30}
(2) :通過key,當(dāng)如指定的value:
d={}
d['小王']=10
d['大王']=20
d['老王']=30
print(d) #輸出 {'小王': 10, '大王': 20, '老王': 30}
②賦值,查詢,刪除
(1)根據(jù)key賦值:
d['小王']=99
print(d) #{'小王': 99, '大王': 20, '老王': 30}
d['小王']=88 #多次對(duì)同一個(gè)key放入不同的value,會(huì)覆蓋前面的賦值
print(d) #{'小王': 88, '大王': 20, '老王': 30}
(2)根據(jù)key查出相應(yīng)的value:
age=d['小王']
print(age)
age=d['王'] #KeyError,當(dāng)key不存在會(huì)拋出這個(gè)錯(cuò)誤
當(dāng)key不存在,會(huì)拋出KeyError,避免key是否存在的方法:
①‘key’in dict 判斷dict中是否又該key
②dict.get('key',defaultValue),如果key不存在,可以返回None
(3) 用pop(key) 刪除一個(gè)鍵值對(duì)
d.pop('小王')
print(d) #{'大王': 20, '老王': 30}
dict的查找是根據(jù)key計(jì)算出value的位置。因此必須保證key是不可變的,否則每次計(jì)算出的value位置都不同,內(nèi)部將會(huì)混亂。在Python中,字符串、整數(shù)等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key. dict存儲(chǔ)的順序和插入順序無關(guān),是無序的。
七:set
set和dic的區(qū)別在于,set沒有儲(chǔ)存對(duì)應(yīng)的value,只有key。同時(shí)對(duì)key的要求也是唯一不可變,因此set可以看成是無序和無重復(fù)元素的集合。
(1)定義
定義一個(gè)set,需要一個(gè) list 作為參數(shù):
l = [1, 2, 3, 4]
s=set(l)
print(s) # {1, 2, 3, 4}
(2)增加,刪除元素
s.add(1)
s.add(2) #重復(fù)元素會(huì)過濾掉
print(s)
s.remove(4) #刪除一個(gè)元素
print(s)
輸出:
{1, 2, 3, 4}
{1, 2, 3}
點(diǎn)贊評(píng)論走起啊~