前導(dǎo)
Python中的數(shù)據(jù)類型主要有:Number(數(shù)字)
、Boolean(布爾)
、String(字符串)
、List(列表)
、Tuple(元組)
、Dictionary(字典)
、Set(集合)
。
其中又分為可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型,可變數(shù)據(jù)類型是指可以隨著函數(shù)的執(zhí)行發(fā)生變化,而不可變數(shù)據(jù)類型不可以改變
不可變數(shù)據(jù)類型(3個(gè)):Number(數(shù)字)
、Boolean(布爾)
、String(字符串)
、Tuple(元組)
可變數(shù)據(jù)類型(4個(gè)):List(列表)
、Dictionary(字典)
、Set(集合)
問:如何判斷一個(gè)變量的類型?
答:1.可以使用type(變量名稱)方法,返回變量的數(shù)據(jù)類型;2.isinstance(變量名稱,數(shù)據(jù)類型),只能返回True或False
一、數(shù)字類型(Number)
Python3中有3種數(shù)據(jù)類型:int(整型)、float(浮點(diǎn)型)、complex(復(fù)數(shù))。
Python3的整型沒有限制大小,可以當(dāng)作Long類型來使用,且bool是整型的子類型。
# 整型int,浮點(diǎn)型float
a=2
b=2.6
print(a,b,type(a),type(b),isinstance(a,int))
# 輸出結(jié)果為
# 2 2.6 <class 'int'> <class 'float'> True
二、布爾類型(Boolean)
布爾類型是與邏輯相關(guān)的一種數(shù)據(jù)類型,且只有True和False兩個(gè)值。(注意:布爾值可以相加,相加之后類型就會(huì)轉(zhuǎn)換為int類型)
# 2.布爾型Boolean
c=True
d=False
d=c+d
print(type(c),type(d),d)
# 輸出結(jié)果
# <class 'bool'> <class 'int'> 1
三、字符串類型(String)
在Python變量定義中,通過單引號和雙引號引起來的值就是字符串str類型。
3.1 字符串索引
字符串正索引a[i]從0開始表示首個(gè)字符,負(fù)索引a[-1]從-1開始表示字符串末尾的字符。
3.2 字符串截取、拼接和復(fù)用
a = b[begin, end, step],begin表示開始位置,默認(rèn)為0,end表示結(jié)束位置,默認(rèn)為變量長度,step表示步長,默認(rèn)為1。例如:a【i,j】
,表示從位置i開始到位置j結(jié)束,其中截取的字符串不包括位置j。
注意:切片中負(fù)索引的使用并不是表示從尾到頭的獲取,索引只是限制了數(shù)據(jù)獲取的范圍。步長
才是確定讀取順序,如果步長為負(fù)數(shù),則是從尾到頭讀取,如果是正數(shù),則是從頭到尾讀取。
str1 = "hello,world!"
print(str1[::])
print(str1[2:5])
print(str1[2,6,2])
print(str1[-1:-4])
print(str1[-5:-2])
print(str1[-1:-5:-1])
# 輸出結(jié)果
hello,world!
llo
lo
空
orl
!dlr
a = "我是王菜鳥"
b = ",你呢"
print(a[0],a[-1],a[:3],a[1,-1],a+b,a*2)
# 輸出結(jié)果
我 鳥 我是王 是王菜 我是王菜鳥,你呢 我是王菜鳥我是王菜鳥
四、列表類型(List)
列表是經(jīng)常用到的數(shù)據(jù)類型,其元素可以是字符串、數(shù)字、列表、元組等自定義的對象。列表是以[]定義,用英文逗號分隔開的集合,元素是可以重復(fù)的。
列表中的操作通常包含索引
、切片
、in和not in
、len
、操作符+和*
、添加/刪除/查詢元素
、排序和反轉(zhuǎn)
、將元組、字符串等序列轉(zhuǎn)換成列表(不會(huì)修改原有的序列)
。
列表的索引和切片與字符串一致,此處不做贅述。
接下來將介紹在列表中的部分操作:
4.1 in和not in
判斷某個(gè)值是否存在于列表中,若存在則返回True,否則返回False(注意:存在是指和列表的某個(gè)元素相同)。
store = [[65, 33], '女', 'wang', 24, 2.3]
print("wang" in store)
print("33" in store)
print("女" not in store)
# 輸出結(jié)果
True
False
False
4.2 len()
len()方法返回列表元素?cái)?shù)量
store = [[65, 33], '女', 'wang', 24, 2.3]
print(len(store))
# 輸出結(jié)果
5
4.3 添加/刪除/查詢元素
添加/刪除/查詢元素 | ||
---|---|---|
操作 | 方法 | 描述 |
添加元素 | append(obj) | 追加元素到列表中,即在列表末尾增加一個(gè)指定元素 |
extend(iterable) | 追加多個(gè)元素到列表中,即在列表末尾增加多個(gè)元素,iterable是序列,表示要添加的元素序列 | |
insert(index, obj) | 在列表指定位置插入元素(指定位置及之后的元素都向后移動(dòng)一個(gè)下標(biāo)) | |
刪除元素 | pop(index) | 刪除并返回列表中指定索引的元素,index默認(rèn)為-1,即最后一個(gè)元素 |
remove(element) | 刪除第一個(gè)與指定值匹配一致的元素(不會(huì)返回相關(guān)值) | |
del | 刪除列表元素或整個(gè)列表 | |
clear() | 刪除列表中所有元素,即成功后,列表是個(gè)空列表 | |
查詢元素 | index(value, start=None, stop=None) | 從列表中的指定范圍找出與指定值第一個(gè)匹配項(xiàng)的索引位置(start和stop不能根據(jù)關(guān)鍵字傳參) |
count(obj) | 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù) |
添加元素
# append
store = [[65, 33], '女', 'wang', 24, 2.3]
store.append("王菜鳥")
print(store)
store.append([66, 68])
print(store)
# extend
store.extend(["Kevin",168])
print(store)
# insert
store.insert(2,999)
print(store)
# 輸出結(jié)果
[[65, 33], '女', 'wang', 24, 2.3, '王菜鳥']
[[65, 33], '女', 'wang', 24, 2.3, '王菜鳥', [66, 68]]
[[65, 33], '女', 'wang', 24, 2.3, '王菜鳥', [66, 68], 'Kevin', 168]
[[65, 33], '女', 999, 'wang', 24, 2.3, '王菜鳥', [66, 68], 'Kevin', 168]
刪除元素
print(store.pop(2))
store.remove('Kevin')
print(store)
store.clear()
print(store)
# 輸出結(jié)果
999
[]
[]
查詢元素
store = [[65, 33], '女', 'wang', 24, 2.3,24]
print(store.index('女'))
print(store.count(24))
# 輸出結(jié)果
1
2
4.4 排序(sort)和反轉(zhuǎn)(reverse)
排序(sort):
格式:list.sort(key=None, reverse=False)
key – 指定帶有一個(gè)參數(shù)并返回一個(gè)對象的函數(shù),用于從列表中的元素提取需要比較的內(nèi)容
sort()默認(rèn)升序排序,即reverse=False,降序reverse=True
list1 = [22, 11, 25, 98, 72, 68, 49]
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)
# 輸出結(jié)果
[11, 22, 25, 49, 68, 72, 98]
[98, 72, 68, 49, 25, 22, 11]
注意:sort中key參數(shù)的用法
# 按照總分成績降序排名
list1 = [[97, 54, 93], [59, 78, 83], [44, 64, 97], [83, 79, 73]]
def sum_scores(scores):
return scores[0] + scores[1] + scores[2]
list1.sort(key=sum_scores, reverse=True)
print(list1)
# 輸出結(jié)果
反轉(zhuǎn)(reverse)
reverse:排序規(guī)則,reverse = True 降序, reverse = False 升序(默認(rèn))。
list1 = [22, 11, 25, 98, 72, 68, 49]
list1.reverse()
print(list1)
# 輸出結(jié)果
[49, 68, 72, 98, 25, 11, 22]
4.5 list()
將元組、字符串等序列轉(zhuǎn)成列表(不會(huì)修改原有的序列)。
# 元組
tup = (22, 86, 26, 35)
print(list(tup))
print(tup)
# 字符串
str1 = "Happy New Year"
print(list(str1))
print(str1)
# 輸出結(jié)果
[22, 86, 26, 35]
(22, 86, 26, 35)
['H', 'a', 'p', 'p', 'y', ' ', 'N', 'e', 'w', ' ', 'Y', 'e', 'a', 'r']
Happy New Year
五、集合(Set)
集合Set是一個(gè)無序且不可重復(fù)的序列,使用{}
或set()
函數(shù)進(jìn)行創(chuàng)建,如果想創(chuàng)建一個(gè)空集合必須用 set() ,{ } 是用來創(chuàng)建一個(gè)空字典的。
注意:集合(Set)只存儲(chǔ)不可變的數(shù)據(jù)類型,如Number(數(shù)字)、字符串、元組等,而無法存儲(chǔ)列表、字典、集合這些可變的數(shù)據(jù)類型。
set1 = set({"Kevin", "Lucy", "Toke", 24})
print(set1)
set2 = set("wang")
print(set2)
set3 = set({22, 33})
print(set3)
# 輸出結(jié)果
{'Toke', 24, 'Lucy', 'Kevin'}
{'w', 'g', 'n', 'a'}
{33, 22}
六、字典類型(Dictionary)
字典以鍵值對(key: value)的方式存儲(chǔ)對象。
1、鍵(key)在字典中必須是唯一的,且鍵是不可變的數(shù)據(jù)類型,如字符串、數(shù)字、元組。如果創(chuàng)建時(shí)鍵被賦值多次,最后一個(gè)值才被存儲(chǔ)。
2、值(value)可以是任意對象,比如None、數(shù)值、字符串、字典等。
dict1 = dict()
print(len(dict1), type(dict1))
dict2 = {}
print(len(dict2), type(dict2))
# 如果創(chuàng)建時(shí)鍵被賦值多次,最后一個(gè)值才被存儲(chǔ)
dict3 = {"a": "Kevin", "b": "Lucy", "a": "Toke"}
print(dict3)
# 輸出結(jié)果
0 <class 'dict'>
0 <class 'dict'>
{'a': 'Toke', 'b': 'Lucy'}
七、其他
7.1 深拷貝與淺拷貝
Python提供了針對列表、集合、字典等數(shù)據(jù)類型的深拷貝和淺拷貝方法。
淺拷貝:對數(shù)據(jù)進(jìn)行地址拷貝,copy()方法只是增加了指向?qū)ο蟮闹羔?,并沒有分配新的空間去存儲(chǔ)數(shù)據(jù);
深拷貝:分配新的空間存儲(chǔ)數(shù)據(jù),原數(shù)據(jù)與深拷貝后的數(shù)據(jù)互不影響
函數(shù) | 描述 |
---|---|
iterable.copy() | 返回可迭代對象iterable的淺拷貝數(shù)據(jù) |
copy.deepcopy(iterable) | 返回可迭代對象iterable的深拷貝數(shù)據(jù) |
如果從相對簡單的角度來理解的話,淺拷貝和深拷貝是針對嵌套對象的區(qū)別,對原數(shù)據(jù)的嵌套對象的修改,淺拷貝對應(yīng)的嵌套對象會(huì)同步影響,深拷貝就不會(huì)受影響。
從存儲(chǔ)的角度來理解,淺拷貝就是增加了指針指向值的存儲(chǔ)地址,并沒有對值開辟新的內(nèi)存空間進(jìn)行存儲(chǔ),深拷貝則是開辟新的內(nèi)存空間去存儲(chǔ)并指針指向新的內(nèi)存地址。文章來源:http://www.zghlxwxcb.cn/news/detail-431341.html
7.2 類型比較
列表[ ](list):有序可改變集合,允許重復(fù)數(shù)據(jù)。
元組( )(tuple):有序不可改變集合,允許重復(fù)數(shù)據(jù)。
集合{ }(set):無序無索引(索引為鍵值)集合,無重復(fù)數(shù)據(jù)。
字典{ }(dictionary):無序,可變,有索引集合,無重復(fù)數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-431341.html
到了這里,關(guān)于【Python基礎(chǔ)篇】Python中的七種數(shù)據(jù)類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!