python中其他資料型別內建方法
阿新 • • 發佈:2022-03-09
目錄
補充字串資料型別內建方法
1.移除字串首尾的指定字元可以選擇方向1: s1 = '$$$jason$$$' print(s1.strip('$')) # jason print(s1.lstrip('$')) # jason$$$ left 左邊 print(s1.rstrip('$')) # $$$jason right 右邊 2.大小寫相關操作: s1 = 'wqeWWWqqq' print(s1.lower()) # 將所有的英文字母變為小寫 #wqewwwqqq print(s1.upper()) # 將所有的英文字母變為大寫 #WQEWWWQQQ print(s1.islower()) # 判斷字串中所有的英文字母是否是純小寫 結果是布林值 # False print(s1.isupper()) # 判斷字串中所有的英文字母是否是純大寫 結果是布林值 # False 3.圖片驗證碼: code = 'JaSOn6' print('這是返回給使用者的圖片驗證碼:%s' % code) user_code = input('請輸入驗證碼>>>:').strip() if code.lower() == user_code.lower(): # 驗證碼忽略大小寫 只需要統一轉大寫或者小寫即可 print('驗證碼正確') 4.判斷字串的開頭或者結尾是否是指定的字元 s1 = 'jason tony 666' print(s1.startswith('j')) # True print(s1.endswith('jason')) # False 5.格式化輸出: 1 是佔位符 %s和%d 2 用{}來代替%s和%dprint('my name is {} my age is {}'.format('jason', 18)) 3 可以用索引取值的方式來反覆使用 print('my name is {0} {0} {0} my age is {0} {1}'.format('jason', 18)) 4 可以用變數名來進行取值 print('my name is {name} {name} my age is {age} {pwd}'.format(name='jason', age=18, pwd=123)) 5 直接使用已經出現過的變數名來取值 name = 'jason' age = 18 print(f'my name is {name} my age is {age} {name} {age}') 6.對比字串: s1 = [20, 25, 36] s2 = [30, 36, 99] print(s1 > s2) # Farse print(s1 < s2) # Ture 7 拼接字串: s1 = '三月不努力 四月變垃圾' s2 = '年少不努力 妄為少年人' print('|'.join(s1)) # 三|月|不|努|力| |四|月|變|垃|圾 print('$'.join(['jason', 'kevin', 'justin', 'tony'])) # jason$kevin$justin$tony 注:join方法相當於是將括號內的元素進行for迴圈 l1 = ['11', 'jason', 'kevin'] print('|'.join(l1)) # 11|jason|kevin 8.替換字串中的指定字元 s1 = 'thn thn thn ben dan' prtin(s1.replace('thn',(zfx)) # 一次性替換 # zfx zfx zfx ben dan 指定替換個數 prtin(s1.replace('thn','zfx', 2)) # 從0開始從左往右 # thn thn zfx ben ben 注:很多文字編輯器裡面的替換功能 就可以使用replace完成 9.判斷字串中是否都是純數字 s1 = 'thn321' prtin(s1.isdigit()) #False prtin('321'.isdigit()) #Ture prtin('321.123'.isdigit()) # False
需要了解的含義
1.查詢指定字元對應的索引值 s1 = 'i, j, cmd' prtin(s1.find('m')) # 從左往右查詢查到就是 #3 print(s1.index('i')) #0 print(s1.find('m', 0, 3)) # -1 意思是沒有 找不到 他是從1到9也就是從i開始到到j後的空格找不到m就是 -1 2.文字的位置改變 age = 18 prtin(age.center(30, '=')) 中間18兩側各15個=因為是30個 同上猜想 ljust 右側 30個 = rjust 左側 30個 = print(age.zfill(50)) zero 零 預設從左往右000~000 50個0後18 3.特殊符號:斜槓與一些英文字母的組合會產生特殊的含義 print('ja\tson\nke\avin') \在markdown語法中是有特殊含義的 如果想取消它們的特殊含義 可以在字串的前面加一個字母r #print(r'ja\tson\nke\avin') 4.captalize,swapcase,title captalize 字元首字母大寫 swapcase 大小寫翻轉 大寫變小寫小寫變大寫 title 每個字母的手寫大寫 類似與大小駝峰
列表內建辦法
1.型別轉換 可以說是除了整數型 浮點型 其他都可以做到型別轉換 轉換為資料列表 但是字典為只能轉換K: print(list({'name': 'jason', 'pwd': 123})) # ['name', 'pwd'] '''list可以轉換支援for迴圈的資料型別 可以被for迴圈的資料型別 字串 列表 字典 元組 集合''' 2.常見操作 name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] 1.索引取值 print(name_list[0]) print(name_list[-1]) 2.切片操作 print(name_list[1:4]) # ['kevin', 'tony', 'tom'] print(name_list[-4:-1]) # ['kevin', 'tony', 'tom'] print(name_list[-1:-4:-1]) # ['jerry', 'tom', 'tony'] 3.間隔 print(name_list[0:4:1]) # ['jason', 'kevin', 'tony', 'tom'] print(name_list[0:4:2]) # ['jason', 'tony'] print(name_list[-1:-4:-1]) # ['jerry', 'tom', 'tony'] 4.統計列表中元素的個數 print(len(name_list)) # 5 5.成員運算 最小判斷單位是元素不是元素裡面的單個字元 print('j' in name_list) # False print('jason' in name_list) # True 6.列表新增元素的方式 6.1.尾部追加'單個'元素 name_list.append('小李') print(name_list) name_list.append([11, 22, 33, 44]) print(name_list) 6.2.指定位置插入'單個'元素 name_list.insert(0, 123) name_list.insert(2, '可不可以插個隊') name_list.insert(1, [11, 22, 33]) print(name_list) 6.3.合併列表 name_list.extend([11, 22, 33, 44, 55]) print(name_list) '''extend其實可以看成是for迴圈+append''' for i in [11, 22, 33, 44, 55]: name_list.append(i) print(name_list) name_list += [11, 22, 33, 44, 55] print(name_list) # 加號的效率不高 7.刪除元素 7.1 通用的刪除方式 del name_list[0] print(name_list) 7.2 就地刪除 # 指名道姓的直接刪除某個元素 print(name_list.remove('jerry')) # None print(name_list) 7.3 延遲刪除 print(name_list.pop()) # 預設是尾部彈出 jerry print(name_list) print(name_list.pop(2)) # 還可以指定索引值 tony print(name_list) 8.修改列表元素 print(id(name_list[0])) # 2614038082368 name_list[0] = 'jasonDSB' print(id(name_list[0])) # 2614038926320 print(name_list) 9.排序 ss = [44, 77, 99, 11, 22, 33, 88, 66] ss.sort() # 預設是升序 print(ss) # [11, 22, 33, 44, 66, 77, 88, 99] ss.sort(reverse=True) # 可以修改尾降序 print(ss) # [99, 88, 77, 66, 44, 33, 22, 11] 10.翻轉 ss = [44, 77, 99, 11, 22, 33, 88, 66] ss.reverse() # 前後顛倒 print(ss) 11.比較運算 s1 = [11, 22, 33] s2 = [1, 2, 3, 4, 5, 6, 7, 8] print(s1 > s2) # True """列表在做比較的時候 其實比的是對應索引位置上的元素""" s1 = ['A', 'B', 'C'] # A>>>65 s2 = ['a'] # a>>>97 print(s1 > s2) # False ss = [44, 77, 99, 11, 22, 33, 88, 66] print(ss.index(99)) # 12.統計列表中某個元素出現的次數 l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33] print(l1.count(11)) # 統計元素11出現的次數 l1.clear() # 清空列表 print(l1)
可變型別與不可變型別
1 = '$$$jason$$$'
print(s1.strip('$')) # jason 本身並沒有修改 是產生了新的結果
print(s1) # $$$jason$$$
s2 = [1, 2, 3]
print(s2.extend([11, 22, 33, 44, 55])) # None 空
print(s2) # [1, 2, 3, 11, 22, 33, 44, 55]
"""
可變型別與不可變型別
可變型別 列表
值改變 記憶體地址不變 修改的是本身
不可變型別 字串
值改變 記憶體地址肯定遍 修改過程產生了新的值
如何檢視變數的'記憶體地址'
"""
s2 = [1, 2, 3]
print(id(s2)) # 2171184953160
s2.append(11111111)
print(id(s2)) # 2171184953160
s1 = ' jason '
print(id(s1))
res = s1.strip()
print(res)
print(s1, id(s1))
佇列與堆疊
佇列
先進先出
eg:超市排隊結賬 符合佇列的特徵
堆疊
先進後出
eg:疊衣服 符合堆疊的特徵
使用列表模擬出佇列與堆疊的特徵
# 佇列
new_list = []
先進
new_list.append(111)
new_list.append(222)
new_list.append(333)
先出
for i in new_list:
print(i)
print(new_list.pop(0))
print(new_list.pop(0))
print(new_list.pop(0))
# 堆疊
new_list = []
# 先進
new_list.append(111)
new_list.append(222)
new_list.append(333)
# 後出
print(new_list.pop())
print(new_list.pop())
print(new_list.pop())