1. 程式人生 > 其它 >python中其他資料型別內建方法

python中其他資料型別內建方法

目錄

補充字串資料型別內建方法

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())