Hello,今天給各位童鞋們分享的是Python資料型別,趕緊拿出小本子記下來吧
執行環境:
python3.8.8
jupyter-lab
資料型別的獲取方法
type(): 返回指定值得資料型別
type(“11”)
output:str
isintance():判斷傳入的值是否為指定型別
isinstance(‘Python你好’, str)
output:True
基礎資料型別(6種)
1 int:數字
2 str:字串
3 list:列表
4 tuple:元組
5 sets:集合
6 dict:字典
不可變資料型別
不可變資料型別包括int(數字)、str(字串)、tuple(元組),float(浮點型)、boolean(布林型)
數字(int)型別操作
資料型別轉換
int(x) :將x轉換為一個整數。
float(x): 將x轉換到一個浮點數。
complex(x, y) :將x轉換到一個複數,實數部分為 x,不傳y時虛數部分為 0。
運算子‘+ - * */ // % * **’
注意的是 “/”總是返回的浮點型
“//”:返回除法向下取整後的結果,
注:返回值還與分母相關,分母為浮點,則返回值也為浮點
17 % 3
output: 2
“//”:返回除法向下取整後的結果,
注:返回值還與分母相關,分母為浮點,則返回值也為浮點
“%”:返回餘數
**:冪運算
abs(x)
返回數字的絕對值
math。xxx
math。ceil(x):返回數字的上入整數
math。exp(x):返回e的x次冪
math。floor(x):返回數字的下舍整數
math。fabs(x):返回數字的絕對值
math。log(x,y):返回以y為底x的對數
math。log10(x):返回以10為基數的對數
math。pi:圓周率
math。e:自然常數
math。modf(x):返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。
max(x,y,z),min(x,y,z)
計算x,y,z中最大/最小的數
pow(x,y)
計算x**y 運算後的值
sqrt()
sqrt(x)返回數字x的平方根
round(x[,n])
round返回浮點數x的四捨五入
見規範輸出專篇
生成隨機數
見隨機數專篇
字串(str)操作
資料型別轉換
str()
將指定值轉為字串型別。
eval()
將字串轉換成有效的python表示式或者計算結果,也可以做資料型別的轉換:
返回特定格式(居中,大小寫,填充)
str。capitalize()
返回首字母大寫,其餘小寫的字串
str。center(width,fillchar)
返回一個指定長度width的居中字串,空餘部分由fillchar指定的字元填充,fillchar預設為空格
注:fillchar只支援一個字元
str。lower() &str。upper()
str。lower() &str。upper() 將指定字串轉換為小寫/大寫
str。title()
title()
返回字串中每一個單詞首字母大寫
str。ljust() & str。rjust()
str。ljust(width,fillchar) & str。rjust(width,fillchar)實現指定寬度的左右對齊字串
統計、 查詢、定點查詢
str。count()
str。count(sub, start, end)
返回
sub
在
str
中出現的次數,可以透過
[start, end]
指定範圍,若不指定,則預設查詢整個字串。
str。find() & str。rfind()
find() 從左往右掃描字串,返回 sub 第一次出現的下標。可以透過 [start, end] 指定範圍,若不指定,則預設查詢整個字串。如最後未找到字串則返回 -1。
rfind則是從右往左開始掃描 ,結果與find一致
str。index() & str。rindex()
和find類似,但是找不到值會報錯ValueError: substring not found
判斷(字母數字大小寫漢字空格首尾)
str。isalnum()
isalnum()
判斷字串中是否所有字元都是字母/漢字/數字,是
True
,否
False
,空字串返回
False
str。isalpha()
isalpha()
判斷字串中是否所有字元都是字母/漢字,是
True
,否
False
,空字串返回
False
str。isdigit()
isdigit() 判斷字串中是否所有字元都是數字(Unicode數字,byte數字(單位元組),全形數字(雙位元組),羅馬數字),是 True ,否 False,空字串返回 False
str。isspace()
字串中只包含空格(\n換行、\r回車、\f換頁、\t橫向製表符、\v縱項製表符),是 True ,否 False,空字串返回 False
str。startswith() & str。endswith
startswith(prefix[, start[, end]]) 檢查字串是否是以指定子字串 substr 開頭,是 True ,否 False,空字串會報錯。如果指定 start 和 end ,則在指定範圍內檢查。
str。istitle()
istitle() 判斷字串是否滿足每一個單詞首字母大寫,是 True ,否 False,空字串返回 False
str。isupper()& str。islower()
str。isupper()& str。islower() 判斷字串所有區分大小寫的字元是否都是大寫/小寫形式
注: 空字串或者字串中午區分大小寫的字元返回False
切割,分割,組裝
str。lstrip() & str。rstrip() & str。strip()
str。
lstrip()
會在字串左側根據指定的字元進行擷取,若未指定預設擷取左側空格回車\r\n\t
str。strip()會擷取字串兩邊指定的字元
str。join(iter)
join(iterable)
以指定字串作為分隔符,將
iterable
中所有的元素(必須是字串)合併為一個新的字串。
str。split() & str。splitlines()
str。split(sep=None, maxsplit=-1)
使用sep做分隔符,進行分割,返回列表,maxsplit從左到右分割的最大次數
str。splitlines
返回字串中的行列表,它按照行
(‘\r’,\n‘,’\r\n‘)
分隔,返回分隔後的列表。它只有一個引數
keepends
表示是否在結果中保留換行符,
False
(預設)不保留,
True
保留
tuple(元組)操作
tuple()
tuple()
將可迭代物件轉換成元組
可變資料型別
可變型別有list(列表)、dict(字典)、set(集合)
list(列表)操作
list()
list()
將可迭代物件轉成列表。
增(追加,拓展,插入)
list。append():追加寫,在末尾新增元素
list。extand():擴充套件列表,在列表末尾新增可迭代物件,字典和集合的追加需要注意
list。insert(index,object):將指定物件插入到index位置,當index大於列表長度時,元素會新增至末尾
list。pop():移除指定位置的元素,並返回刪除的元素的值,預設移除最後一個,超出長度則會報錯。
list。remove(value):刪除列表中第一次出現的value,無返回值,直接對列表進行修改。值不存在則報錯。
list。clear():移除列表中所有的元素,無返回值,列表為[]
改(賦值排序)
list。reverse():將列表本身進行逆序排列
list。sort(key, reverse):對列表進行特定方式的排序,修改原列表,且元素相等時順序不會因為排序而改變。
key:指定可迭代物件中的每個元素按照該函式進行排序,通常和lambda一起使用。
reverse: False為升序,True為降序
list。index(value,start,stop):返回列表中第一個與value匹配的元素下標。
list。count(value):返回value在列表中出現的次數,無value則返回0
ist。copy() # 深複製淺複製
淺複製通常只複製物件本身,而深複製不僅會複製物件,還會遞迴的複製物件所關聯的物件。
深複製可能會遇到兩個問題:
一個物件如果直接或間接的引用了自身,會導致無休止的遞迴複製;
深複製可能對原本設計為多個物件共享的資料也進行複製。
解決方法:deepcopy可以透過memo字典來儲存已經複製過的物件,從而避免自引用遞迴問題
注:列表的切片操作[:]相當於實現了列表物件的淺複製
copy:
- 當最外層物件為可變型別時,copy後得到的物件指向新的記憶體空間,當最外層的物件為不可變型別時,copy後得到的物件指向原物件的記憶體空間(注意:淺複製的物件的最外層是否是可變型別)
deepcopy:除複製物件本身,還複製物件中引用的其他物件
- 複製的內容中只要有一個是個可變型別,那麼deepcopy一定是深複製
注:深複製只有一種方式:copy模組中的deepcopy函式。
1、賦值:簡單地複製物件的引用,兩個物件的id相同。
2、淺複製:建立一個新的組合物件,這個新物件與原物件共享記憶體中的子物件。
3、深複製:建立一個新的組合物件,同時遞迴地複製所有子物件,新的組合物件與原物件沒有任何關聯。雖然實際上會共享不可變的子物件,但不影響它們的相互獨立性。
dict(字典)操作
dict。clear()
clear() 清除字典的所有內容
dict。fromkeys()
fromkeys()
建立一個新字典,以序列
iterable
中元素做字典的鍵,
value
為字典所有鍵對應的初始值
iterable:
可迭代物件,新字典的鍵
value:
可選引數, 設定鍵序列對應的值,預設為
None
dict。get()
get(key, default=None)
根據指定的
key
值查詢,如果
key
在字典中,則返回
key
的值,否則為
None
dict。items()
items()
返回檢視物件,是一個可遍歷的
key/value
對,可以使用
list()
將其轉換為列表
dict。keys()
keys()
返回一個檢視物件,值為字典的
key
,可將其轉換成列表
dict。setdefault()
setdefault(key, default=None)
如果鍵不在字典中,則插入值為
None
的鍵。如果鍵在字典中,則返回鍵的值
dict。update()
dict。update(dict1) 把字典 dict1 的 key/value 對更新到 dict 裡,當 dict1 的 key 出現在 dict 中則修改 dict 中的值,如果 key 沒有出現在 dict 中,則新增這一對 key/value
dict。values()
values()
返回一個檢視物件,值為字典的
value
,可將其轉換成列表
dict。pop() & dict。popitem()
dict。pop() 刪除指定
key
的
key/value
,如果
key
沒有找到,則報錯
popitem()
刪除字典中末尾的元素,並返回一個元組的(鍵,值)對。字典為空則報錯
set(集合)
set。add()
向集合中新增一個元素,但如果該元素已經出現在集合中,則不起作用
注:如果add的元素已經在集合中 集合不會發生變化
set。clear()
clear()
移除集合中的所有元素
set。difference() & set。difference_update()
difference() 返回多個集合的差集,通俗來講就是返回第一個 set 中哪些元素沒有在其他 set 中出現
difference_update() 方法與 difference() 方法的區別在於 difference() 方法返回一個移除相同元素的新集合,而 difference_update() 方法是直接移除原集合中的元素,無返回值
set。discard()
discard()
刪除集合中指定的元素。如果指定移除的元素不在集合中,則不移除
set。intersection() & set。intersection_update()
intersection() 返回集合的交集。沒有交集則返回空集 set()
intersection_update() 方法與 intersection() 方法的區別在於 intersection() 方法將集合的交集作為新集合返回,而 intersection_update() 方法是直接修改原集合中的元素,只保留交集元素,無返回值。
set。isdisjoint()
isdisjoint()
判斷兩個集合是否包含相同的元素,有則返回
False
,無則返回
True
set。issubset()&set。issuperset()
issubset(set1) 判斷集合 set2 是否為 set1 集合的子集。是則返回 True,否則返回 False
issuperset(set2) 判斷集合 set2 是否為 set1 集合的子集。是則返回 True,否則返回 False。它與 issubset() 用法相同,只有引數的位置相反而已
set1。pop()&set。remove()
pop()
移除並返回集合中的任意元素。如果該集合為空集則報錯
remove()
從集合中移除指定的元素,如果該元素不在集合中,則發生報錯
set。symmetric_difference()&set。symmetric_difference_update()
symmetric_difference() 返回兩個集合中不重複的元素集合,即兩個集合的補集,與 ^ 的作用相同
symmetric_difference_update(set2) 移除 set1 中在 set2 相同的元素,並將 set2 集合中不同的元素插入到 set1 中。簡單來說就是把 set1 與 set2 的補集賦值給 set1
set。union()
union()
返回多個集合的並集。與
|
的作用相同
set。update()
update()
使用本身和其他的聯合來更新集合
好啦,今天的文章就到這裡了,希望能夠幫助到螢幕前迷茫的你們