字串補充,列表內建方法
今日內容
- 字串的其他內建方法
- 列表內建方法
字串的其他內建方法
-
移除字串首尾的指定字元,可以指定方向
# strip() 去除兩邊 # lstrip() 去除左邊 # rstrip() 去除右邊 # 括號內不寫東西,預設是空格 s = '$$$hello$$$' print(s.strip('$')) # 結果:hello print(s.lstrip('')) # 結果:hello$$$ print(s.rstrip('')) # 結果:$$$hello
-
字串大小寫相關操作
# lower 將字串所有的英文字母全轉為小寫 # upper 見字串所有的英文字母全轉為大寫 s = 'tuzi12312' print(s.upper()) # TUZI12312 print(s.lower()) # tuzi12312 print(s.islower()) # 判斷字串內的英文字母是否全部是小寫 # True print(s.isupper()) # 判斷字串內的英文字母是否全部是大寫 # False # 這個內建方法的應用領域最經典的就是驗證碼 code = 'TuZi' # 定義一個驗證碼 print('返回給使用者的圖片驗證碼%s:'%code) # 提示給使用者驗證碼資訊 user_code = input('請輸入圖片裡的字母>>>:').strip() # 獲取使用者輸入的驗證碼,並遮蔽使用者輸入的空格 if user_code.lower()== code.lower(): # 判斷使用者輸入的驗證碼是否正確,並全轉換為小寫來進行比對 print('驗證成功') else: # 輸入錯誤則執行子程式碼 print('驗證失敗')
-
判斷字串開頭是否是指定的字元
''' startswith:判斷開始的字元是否為指定的字元 endswith:判斷末尾的字元是否為指定的字元 ''' s = 'tuzi abaaba tom jerry' print(s.startswith('t')) # True print(s.startswith('tuzi')) # True print(s.endswith('s')) # flase
-
格式化輸入(python 中推薦使用format)
#方式1:佔位符%s %d #方式2:format方法:一共有四種 # 1.跟佔位符一樣,使用{}佔位 print('tuzi {} age {} psw {}'.format('meitoufa', 18, 123)) # 這種方式有幾個大括號,就得填入幾個元素 # 結果:tuzi meitoufa age 18 psw 123 # 2.根據索引佔位 print('username {0} age {1} psw {2}'.format('tuzi', 18, 123)) # 跟第一種方式差不多,只不過大括號裡面加了索引,後面的括號就是一次寫上你想輸出的東西,索引可以重複使用 # 結果:username tuzi age 18 psw 123 print('username {0} age {1} psw {1}'.format('tuzi', 18, 123)) # 結果:username tuzi age 18 psw 18 # 3.指名道姓的方式取值 print('username {name} age {age} paw {paw}'.format(name='tuzi', age=18, paw=123)) # username tuzi age 18 paw 123 # 4.直接使用已經有的變數名 name = 'tuzi' age = 18 print(f'my name is {name},my age is {age},my paw = {age}')
-
拼接字串
拼接字串可以直接使用加號和乘號,也可以使用內建方法join,join相當於將括號內的元素進行for迴圈,之後拿前面要拼接的符號進行拼接。
# 可以直接使用加號 # 乘號只能把一條字串重複幾次列印 s1 = '我是字串一號' s2 = '你吃飯了嗎' print(s1 + s2) # 結果:我是字串一號你吃飯了嗎 print(s1 * 3) # 結果:我是字串一號我是字串一號我是字串一號 # join print('|'.join(s1)) # 我|是|字|符|串|一|號 print('$'.join(['tuzi','tom','jerry'])) # 擴充套件: l1 = [11,'tuzi','tom'] print('|'.join(l1)) # 不能執行,會報錯,join只能拼接字串型別
-
替換字串中指定的字元
# replace s1 = 'tuzi tuzi tuzituzi and tom tom tom 123 321 1234 tuzi tuzi' print(s1.replace('tuzi','meitoufa')) # meitoufa meitoufa meitoufameitoufa and tom tom tom 123 321 1234 meitoufa meitoufa # 預設是一次性替換所有 # 也可以指定替換個數(從左往右) print(s1.replace('tuzi','jerry',2)) # 後面這個數字2 就是用來控制它替換的個數的 # jerry jerry tuzituzi and tom tom tom 123 321 1234 tuzi tuzi # 判斷字串中是否為純數字 # isdigit 只能判斷整數,不可以是小數或字串 s1 = '12321321321123' print(s1.isdigit()) # True print('tuzi123'.isdigit()) # false print('11.11'.isdigit()) # false
-
查詢在指定字元對應的索引值
find和index都可以用來查詢字元對應的索引值,但是用index查詢的字元沒有對應的索引值時,這段程式碼會報錯,所以index也不推薦使用
# 查詢指定字元對應的索引值 # 從左往右依次查詢,找到第一個停止 # find s1 = 'tuzi tom jerry 123' print(s1.find('o')) # 結果為6 print(s1.find('1',1,8)) # 也可以定義起始位置和終止位置 結果為-1,意思就是沒找到 # index print(s1.index('p')) # 如果該字串中,沒有找到想要找的字元,那麼會直接報錯 print(s1.index('o',1,10)) # 也可以定義位置查詢
-
文字位置改變
center:指定寬度居中的字串,可選填充字元,預設為空格
ljust:指定寬度左對齊的字串,可選填充字元,預設為空格
rjust:指定寬度右對齊的字串,可選填充字元,預設為空格
zfill:指定寬度右對齊的字串,不可選填充字元,填充字元為"0"
name = 'tuzi' print(name.center(11,'*')) # 多新增的字元和字串本身長度的和等於你所設值的長度(11) # 結果:****tuzi*** print(name.ljust(12,'/')) # 將字串左對齊,在字串後面新增字元 # 結果:tuzi//////// print(name.rjust(12,'-')) # 將字串右對齊,在字串前面新增字元 # 結果:--------tuzi print(name.zfill(12)) # 將字串右對齊,在字串前前面新增0,不能自定義新增, # 結果:00000000tuzi
-
特殊符號
\t 製表符,空了四格
\n 換行
\a 特殊符號
如果想取消他們的含義,在字串前面加一個字母r
print('t\tu\az\ni') # 輸出結果: t uz # i # 取消特殊符號的含義 print(r't\tu\az\ni') # 取消特殊符號的含義 # t\tu\az\ni
-
首字母大寫
captalize:將字串的首個英文字母大寫
s1 = 'my name is tuzi' print(s1.capitalize()) # 結果:My name is tuzi
-
大小寫反轉
swapcase:將字串的大小寫全部反轉過來,也就是字面意思,大寫轉為小寫,小寫轉為大寫
s1 = 'my name is tUZi' print(s1.swapcase()) # 結果:MY NAME IS TuzI
-
字串裡每個英文首字元大寫
title:將字串裡的每個英文首字母大寫,並把其他的全部轉換為小寫
s1 = 'my name is tUZi' print(s1.title()) # 結果:My Name Is Tuzi
列表內建方法
-
型別轉換
列表可以轉換支援for迴圈的資料型別:字串、字典、集合、元組。而整型和浮點型、布林型不可以轉換
# 字串轉列表 # a = 'tuzi' # a = list(a) # print(a) # 結果:['t', 'u', 'z', 'i'] # 字典轉列表 # b = {'name':'tuzi','age':18} # b = list(b) # print(b) # 結果:['name', 'age'] # 集合轉列表 # c = {1,2,3,4} # c = list(c) # print(c) # 結果:[1, 2, 3, 4] # 元組轉列表 # d = (1,2,3,4,5) # d = list(d) # print(d) # 結果:[1, 2, 3, 4, 5]
-
索引取值
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print(l1[4]) # 結果:[4, 5, 6]
-
切片操作
顧頭不顧尾
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print(l1[1:3]) # 兩個數可以控制切片的區間,顧頭不顧尾 # 結果:[2, 3] print(l1[-4:3]) # 也可以用複數取值 # 結果:[2, 3] print(l1[-1:-4:-1]) # 第三個數也可以控制取值方向 # 結果:[[4, 5, 6], 'tuzi', 3]
-
間隔
類似於字串的步長,間隔多大,就隔幾個取幾個
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print(l1[0:4:2]) # 結果:[1, 3]
-
統計列表中元素的個數
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print (len(l1)) # 結果:5
-
成員運算
最小判斷的是列表中的元素,而不是元素裡面的某一個字元
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print('t' in l1) # False print('tuzi' in l1) # True print(1 in l1) # True
-
列表新增元素的方式
尾部追加某個元素,可以是任意資料型別
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] l1.append('大不大') print(l1) # 結果:[1, 2, 3, 'tuzi', [4, 5, 6], '大不大']
合併列表
extend 加在原列表的後邊 可以看成for迴圈+append
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] l1.extend([11,22,123]) print(l1) # 結果:[1, 2, 3, 'tuzi', [4, 5, 6], 11, 22, 123] # 用加號也能實現 (缺點就是元素如果很多,那就會大量空間) l1 += [77,88,99] print(l1) # [1, 2, 3, 'tuzi', [4, 5, 6], 77, 88, 99]
指定位置插入'單個'元素
用索引來定位,單個的意思是如果要插入一個列表,那麼這一整個列表都會被插在索引位置
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] l1.insert(0,123) print(l1) # 結果:[123, 1, 2, 3, 'tuzi', [4, 5, 6]]
-
刪除元素
通用的刪除方式
# 通用的刪除方式 l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] del l1 [0] # 用索引來定位想要刪除的元素 print(l1) # [2, 3, 'tuzi', [4, 5, 6], 77, 88, 99]
就地刪除,指名道姓的刪除某個元素
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print(l1.remove('tuzi')) # None print(l1) # [1, 2, 3, [4, 5, 6]]
延遲刪除(預設是刪除尾部)
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] print(l1.pop()) # [4, 5, 6] print(l1) # [1, 2, 3, 'tuzi']
-
修改列表元素
用索引定位想要修改的元素
l1 = [1, 2, 3, 'tuzi', [4, 5, 6]] l1[0]='tuzi' print(l1) # ['tuzi', 2, 3, 'tuzi', [4, 5, 6]]
-
排序
sort預設是升序
l2 = [77, 44, 11, 88, 55, 22, 99, 66, 33] l2.sort() print(l2) # [11, 22, 33, 44, 55, 66, 77, 88, 99]
也可以調整為降序
l2 = [77, 44, 11, 88, 55, 22, 99, 66, 33] l2.sort(reverse=True) print(l2) # [99, 88, 77, 66, 55, 44, 33, 22, 11]
-
翻轉
將列表中的元素順序翻轉過來
l2 = [77, 44, 11, 88, 55, 22, 99, 66, 33] l2.reverse() print(l2) # [33, 66, 99, 22, 55, 88, 11, 44, 77]
-
比較運算
列表跟列表的比較大小的時候,其實是比的對應索引位置上的元素
ss1 = [11, 22, 33] ss2 = [1, 2, 3] print(ss1 > ss2) # True (列表在做比較的時候,比的對應索引位置上的元素) ss1 = ['A', 'B', 'C'] ss2 = ['a', 'b', 'c'] print(ss1 > ss2) # False (字母也有相對應的值,比的是ASCII碼上對應的值)
-
統計列表中某個元素出現的個數
使用count方法
print(ll1.count(11)) # 結果為:5
-
清空列表
clear清空列表中的所有元素
ll1 =[11,22,33,11,11,11,44,99,88,55,77,33,55,55,44,11] ll1.clear() print(ll1) # []
-
可變型別和不可變型別
可變型別:列表
值改變,記憶體地址不變,修改的是值的本身
不可變型別 字串
值改變,記憶體地址肯定變,修改過程中產生了新的值
如何檢視變數的記憶體地址:id(變數名)
# 不可變型別 s1 = '$$$$hello$$$$' print(id(s1)) # 2642799506992 s2 = s1.strip('$') print(s2) print(s1, id(s1)) # $$$$hello$$$$ 2642799506992 # 本身沒有被修改,而是產生了新的結果 # 可變型別 s2 = [1, 2, 3] print(id(s2)) # 2965206418888 s2.append(123) print(id(s2)) # 2965206418888
-
佇列於堆疊
佇列是先進先出,類似於超市排隊結賬,符合佇列的特徵
堆疊是先進後廚,類似於疊衣服, 符合堆疊的特徵,一層一層往上放
使用列表模擬出佇列於堆疊的特徵:
# 佇列 new_list=[] new_list.append(111) new_list.append(222) new_list.append(333) print(new_list) # [111, 222, 333] # 先出 print(new_list.pop(0)) print(new_list.pop(0)) print(new_list.pop(0)) # 111 # 222 # 333 # 也可以使用for迴圈 for i in new_list: print(i) # 堆疊 # 先進 new_list=[] new_list.append(111) new_list.append(222) new_list.append(333) print(new_list) #後出 print(new_list.pop()) print(new_list.pop()) print(new_list.pop()) # 333 # 222 # 111