1. 程式人生 > 其它 >python基本資料型別內建方法(1)

python基本資料型別內建方法(1)

目錄

引言

   昨天結束了流程控制,並且講了幾個最簡單的基本資料型別內建方法。今天繼續講講內建方法。內建方法很多,不要怕,只要用多了,你就會做到想到就能寫出來的地步。

字串內建方法

移除首尾單邊字元

   如果要去除首尾字元,我們會考慮strip(),但是當我們只要去除一邊的字元呢。rstrip()可以只去除尾部的字元,lstrip()可以只去除頭部的字元。

text = '**abcd**'
# 去除尾部的指定符號*  
print(text.rstrip('*'))  # '**abcd'
# 去除頭部的指定符號*
print(text.lstrip('*'))  # 'abcd**'

大小寫變化

   網上衝浪年齡比較大的應該會知道,以前的驗證碼都是要區分大小寫的,但是現在都不需要了,這是由於內建方法大小寫導致的。lower()就是把字串中的英文字元全部小寫,upper()就是把字串中的英文字元全部大寫。islower()就是判斷一行字串中是否都是小寫,isupper()就是判斷一行字串中是否都是大寫,這兩個內建方法的結果都是布林值型別的。

text = 'kinGnie'
# 把字串全部變成小寫
text.lower()  # 'kingnie'
# 把字串全部變成大寫
text.upper()  # 'KINGNIE'
# 判斷字串中是否都是小寫
text.islower()  # False
# 判斷字串中是否都是大寫
text.isupper()  # False

判斷字串開頭結尾

   startswith()用於判斷字串的首字元是不是指定字元,endswith()用於判斷字串的尾部是不是指定字元。

text = 'asdlkgjd'
# 判斷首字元
text.startswith('a')  # True
text.startswith('ab')  # False
# 判斷尾部字元
text.endswith('d')  # True
text.endswith('jd')  # True

格式化輸出

   前面一期我們已經講過了格式化輸出的一種方式————佔位符。但是,在早些年間python開發團隊已經提出了想把%s這種佔位符取消掉。今天就來介紹一些別的格式化輸出的方法,主要是format。

# 使用{}表示佔位符
print('我今年{}歲,我叫{}。'.format(18, '金燁敏'))  # 我今年18歲,我叫金燁敏。
# 有索引的佔位
print('我今年{0}歲,我叫{1},{0}歲的我很強壯。'.format(18, '金燁敏'))  # 我今年18歲,我叫金燁敏。
# 帶變數名的
print('我今年{age}歲,我叫{name},{age}歲的我很強壯。'.format(age = 18, name = '金燁敏'))  # 我今年18歲,我叫金燁敏。
# 變數在外面型
age = 18
name = '金燁敏'
print(f'我今年age歲,我叫name,age歲的我很強壯。')

拼接字串

   加號可以把兩個字串拼接起來,*把一個字串複製很多個並且會拼接好,join把字串用for語句迴圈並且用指定符號拼接。記住了join拼接的元素必須是字串才行,數字型會報錯

# 加號拼接效率低
print('dsa' + 'dsa')  # 'dsadsa 
# 星號進行復制
print('dsa' *   5)  # dsadsadsadsadsa
# 使用join對字串進行迴圈拼接
print('|'.join('dsadsa'))  # d|s|a|d|s|a

替換字串中指定字元

   replace()是用來替換字元的,第一個引數是要被替換的字元,第二個引數是替換的字元,第三個字元是表示替換掉幾個。

# 規定數量的替換
print('fa fa fa lidasljaljkljaksljd'.replace('fa', 'mo', 2))  # mo mo fa lidasljaljkljaksljd
# 全部替換
print('fa fa fa lidasljaljkljaksljd'.replace('fa', 'mo'))  # mo mo mo lidasljaljkljaksljd

判斷字串中是否為純數字

# isdigit()
text = '4646465456'
print(text.isdigit(text))  # True
text1 = 'sadasd465465'
print(text.isdigit(text))  # False

查詢指定字元的對應索引值

   從這裡開始的字串的內建方法內容就是用的不頻繁的了。

# find方法
s1 = 'king wolf kin zinz'
print(s1.find('f'))  # 8
# find也可以用索引值定一個查詢範圍。
print(s1.find('f', 1, 8))  # -1  沒找到就返回-1

#index方法
s1 = 'king wolf kin zinz'
print(s1.index('f'))  # 8  index方法沒找到會報錯

文字位置改變

# center居中
s1 = 'king'
print(s1.center(10,'-'))  # '---king---' 給字串居中,不足的個數用指定符號補充
# ljust左對齊
s1 = 'king'
print(s1.ljust(10, '-'))  # 'king------'  給字串左對齊,不足的個數用指定符號補充
# rjust右對齊
s1 = 'king'
print(s1.rjust(10, '-'))  # '------king'  給字串右對齊,不足的個數用指定符號補充
# zfill右對齊,不夠的地方用0補充
s1 = 'king'
print(s1.zfill(10))  # '000000king'  給字串右對齊,不足的個數用指定符號補充

轉義字元

   反斜槓加上有些英文字母就是轉義字元,有特殊的用處

# 帶轉義字元的字串
print('dlsjdal\ndadsasasd')
'''
'dlsjdal
dadsasasd'
'''
# 取消轉義
print(r'dlsjdal\ndadsasasd')  # 'dlsjdal\ndadsasasd'

字母大小寫

# 首字母大寫
message = 'dasdsa'
print(message.capitalize())  # Dasdsa
# 字母大小寫翻轉
message = 'DasDsadA'
print(message.swapcase())  # dASdSADa
# 每個單詞首字母大寫
message = 'my dear friend is king'
print(message.title())  # My Dear Friend Is King

列表內建方法

型別轉換

   列表的型別轉換基本上用於可以for迴圈的資料型別,比如字串、元組、集合、字典。

num_dict = {'name': 'king', 'age': 18}
print(list(num_dict))  # ['name', 'age'],還是老話,鍵值對中的值只能通過鍵獲得
num_set = {1, 2, 3, 4}
print(list(num_set))  # [1, 2, 3, 4]
num_tuple = (1, 3, 4, 6)
print(list(num_tuple))  # [1, 3, 4, 6]
num_str = 'sdads'
print(list(num_str))  # ['s', 'd', 'a', 'd', 's']

基本操作

   列表的索引取值、切片、統計個數、成員運算其實和字串型沒啥區別,只是列表是以元素為個體,字串是以字元為個體。

num_list = ['king', 'tom', 'job', 'kim', 'jason']
# 索引取值
num_list[0]  # 'king'
# 切片
num_list[0:3]  # ['king', 'tom', 'job']
num_list[0:4]  # ['king', 'job']
# 統計元素個數
len(num_list)  # 5
# 成員運算子
ls = 'king'
print(ls in num_list)  # True

列表新增元素

尾部新增'單個'元素

# append括號內的物件不管是什麼形式的,進入列表都只算一個元素
num_list = ['king', 'tom', 'job', 'kim', 'jason']
num_list.append('min')
print(num_list)  # ['king', 'tom', 'job', 'kim', 'jason', 'min']
num_list.append([1, 2, 4, 8])  
print(num_list)  # ['king', 'tom', 'job', 'kim', 'jason', 'min', [1, 2, 4, 8]]

指定位置插入單個'元素'

'''
insert是插入指定的索引值處,原該索引值處及後面的元素都後移。insert中第一個引數輸入索引值,第二個引數輸入插入物件。
'''
num_list = ['king', 'tom', 'job', 'kim', 'jason']
num_list.insert(0,'min')  
print(num_list)  # ['min', 'king', 'tom', 'job', 'kim', 'jason']

合併列表

   合併列表可以用加號,但是加號的效率低,且佔用空間過多,加號是要開闢一個新的記憶體空間,把結合出來的值放在新的記憶體空間中,extend是在原有的記憶體空間中進行修改。當然+=和extend一樣是在原列表後面進行追加。

num_list = ['king', 'tom', 'job', 'kim', 'jason']
num_list.extend([1, 2, 3, 4])  # ['king', 'tom', 'job', 'kim', 'jason', 1, 2, 3, 4]

列表中刪除

通用刪除

num_list = ['king', 'tom', 'job', 'kim', 'jason']
del num_list[0]  
print(num_list)  # ['tom', 'job', 'kim', 'jason']

指明道姓刪除

num_list = ['king', 'tom', 'job', 'kim', 'jason']
num_list.remove('king')  
print(num_list)  # ['tom', 'job', 'kim', 'jason']

延遲刪除

# pop延遲刪除也可以當作是從列表中拿出來單獨使用完才刪除
num_list = ['king', 'tom', 'job', 'kim', 'jason']
num_list.pop()  # 'jason'  預設是把最後一個移出去
num_list.pop(0)  # 'king'  也可以使用索引移出去指定元素

修改列表元素

# 直接給索引重新繫結變數值
num_list = ['king', 'tom', 'job', 'kim', 'jason']
num_list[0] = 'yes'
print(num_list)  # ['yes', 'tom', 'job', 'kim', 'jason']

排序

num_list = [44, 55, 77, 88, 11]
num_list.sort()
print(num_list)  # [11, 44, 55, 77, 88]  預設從小到大
num_list.sort(reverse=True) 
print(num_list)  #  [88, 77, 55, 44, 11]  reverse是翻轉的意思,從大到小

翻轉

num_list = [44, 55, 77, 88, 11]
num_list.reverse()
print(num_list)  # [11, 88, 77, 55, 44]

比較運算

# 列表做比較主要是相對應的索引作比較。
num_list = [44, 55, 77, 88, 11]
num_lstwo = [1, 2, 4]
print(num_list > num_lstwo)  # True

統計列表中元素出現的次數

ls1 = [11, 22, 66, 11, 11, 33, 77, 11, 11]
print(ls.count(11))  # 5

清空列表

ls1 = [11, 22, 66, 11, 11, 33, 77, 11, 11]
ls1.clear()
print(ls1)  # []

可變型別和不可變型別

   可變型別主要是值改變了地址不變,不可變型別主要是值改變,地址也改變。拿列表來說列表時可變型別的,列表指向記憶體空間中的索引值,當列表內的元素改變了,是索引值指向的變數值改變了,列表還是指向了索引值所在的記憶體空間,而字串這些不可變型別的變數名是直接指向變數值的,當變數值改變了,只是變數名指向的記憶體地址改變了。

不可變型別的情況就是索引值和變數值這種情況。

佇列與堆疊

   佇列是先進先出,類似於排隊買東西,你先到就是你先買好東西先走。而堆疊就類似於薯片,最先進去的薯片會是最後一片被拿出來的。‘

# 佇列類似
ls1 = [11, 22, 66, 11, 11, 33, 77, 11, 11]
ls2 = []
for i in ls1:
    ls2.append(i)
while len(ls1) > 1:
    ls2.pop(0)
# 堆疊類似
ls1 = [11, 22, 66, 11, 11, 33, 77, 11, 11]
ls2 = []
for i in ls1:
    ls2.append(i)
while len(ls1) > 1:
    ls2.pop()

總結

   小夥伴們,今天的內容主要還是靠背和多使用的,難度不是很大,加油!