今日總結——字串和列表的內建方法、可變型別與不可變型別和佇列與堆疊
阿新 • • 發佈:2022-03-09
今日總結
-
字串的其他內建方法
-
必須瞭解操作
-
列表的內建方法
-
可變型別與不可變型別
-
佇列與堆疊
字串的其他內建方法
1 、移除字串首尾的指定字元,可以自定義移除的方向
strip(移除用語)
rstrip(右邊移除)
lstrip(左邊移除)
用法:
# s1 = '***owen***'
# print(s1.strip('*')) # owen
# print(s1.rstrip('*')) # ***owen
# print(s1.lstrip('*')) # owen***
2 、大小寫相關操作
lower——改成小寫 upper——改成大寫 用法: # l1 = 'OweN123OH' # print(l1.lower()) # 將所有的英文字母改成小寫 owen123oh # print(l1.upper()) # 將所有的英文字母改成大寫OWEN123OH # print(l1.islower()) # 判斷字串中所有英文字母是不是都小寫 結果顯示為false-布林值 # print(l1.isupper()) # 判斷字元中所有的英文字母是不是都大寫 結果顯示為false——布林值
課時補充:圖片驗證碼,之前都必須一模一樣,現在卻不用
# code = 'OwEn2' # 定義一個驗證碼
# print('圖片驗證碼:%s' % code) # 提示使用者驗證碼
# user_code = input('請輸入驗證碼>>>:').strip() # 給獲取到的變數定義一個變數名,並去除首尾空格字元
# if code.lower() == user_code.lower():
# print('驗證碼正確')
3 、判斷字元的開頭或者結尾是否是指定的字元
startswith——開頭處 endswith——結尾處 用法: l1 = 'lili owen jery kevin 123' print(l1.startswith('l')) # 判斷'l'在不在字串中的開頭 print(l1.startswith('lili')) # 判斷'lili'在不在字串的開頭 print(l1.startswith('owen')) # 判斷'owen'在不在字串的開頭 print(l1.endswith('3')) # 判斷'3'在不在字串的結尾 print(l1.endswith('123')) # 判斷'123'在不在字串的末尾 print(l1.endswith('jery')) # 判斷'jery'在不在字串的末尾
4 、格式化輸出
方式1:佔位符:%s %d
方式2:
format方法有四種使用方法
方法1:和佔位符一樣,使用{}佔位
print('my name is {} my age is {}'.format('owen', 20))
方法2:根據索引取值,可以反覆的使用 ,並且可以改變取值的內容
print('my name is {0} {1} my age is {1} {0}'.format('owen',20))
方法3:根據指名道姓的方式取值 print('my name is {name} my age is {age}'.format(name='owen', age=30))
方法4、直接使用已經出現過的變數
name = 'owen'
age = 20
print(f'my name is {name} my age is {age}{age}')
5 、拼接字串
join——拼接
l1 = '鋤禾日當午 上班好幸苦'
l2 = '為了盤中餐 汗水都流乾'
print('|'.join(l2)) # 為|了|盤|中|餐| |汗|水|都|流|幹
#####
print('|'.join(['owen','wuhua','tony'])) # owen|wuhua|tony
print('|'.join(['owen','wuhua','tony', 22])) # 報錯
# join的元素都必須是字串才可以,否則就會報錯
6 、替換字串中指定的字元
replace——替換字元
用法:
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony')) # 將Owen替換成tony
預設一次性替換完
也可以指定替換的個數
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony',1)) # 指定替換其中一個,從左往右
7 、判斷字串中是否為純數字
isdigit——是否數字
用法:
l1 = 'owen111'
l2 = '123'
print(l1.isdigit()) # false
print(l2.isdigit()) # true
# 判斷使用者輸入的字串是否為純數字
score = input('score>>>:').strip() # 獲取使用者輸入,並移除首尾空格
if score.isdigit(): # 如果字串為純數字
score = int(score) # 字串為整數
print('還不錯哦') # 列印還不錯哦
else: # 否則
print('再不好好寫,給你一皮錘')
瞭解操作
1 、查詢指定字元對應的索引值
find、index(找不到值時直接報錯,不推薦使用)
用法:
l1 = 'owen mark zhuli xiaohua'
print(l1.find('o')) # 結果為0,從左往右開始查詢,找到第一個o就停止
print(l1.find('n',0,2)) # 結果為-1(意思就是找不到)
print(l1.index('m', 1, 4)) # 找不到直接報錯 不推薦使用
2 、文字位置改變
center——文字居中
ljust——文字左對齊
rjust——文字右對齊
zfill——文字前面自動填充零,文字右對齊
name = 'owen'
print(name.center(20,'*')) # 結果為********owen********
print(name.ljust(20,'*')) # 結果為 owen****************
print(name.rjust(20,'*')) # 結果為****************owen
print(name.zfill(10)) # 結果為000000owen
3 、特殊符號:斜槓與一些英文字母的組合會產生特殊的 含義
\n ——行分隔符、\t——元素分隔.....
print('ow\nen') | print('ow\ten')
# 如果想取消它們的特殊含義,,可以在字串前面加r
print('ow\nen') | print('ow\ten') |
---|---|
ow (第一行) | ow en |
en (第二行) |
4 、captalize , swapcase , title
captalize——首字母大寫
message = 'nice to meet you!' print(message.capitalize()) # Nice to meet you!
swapcase——大小寫翻轉
message = 'Have a good time'
print(message.swapcase()) # hAVE A GOOD TIME
title——讓每個單詞的首字母大寫
message = 'Have a good time'
print(message.title()) # Have A Good Time
列表內建方法
1 、型別轉換
list可以轉換支援for迴圈的資料型別
可以被for迴圈的資料型別:字串 列表 字典 元組 集合
print(list(123)) # 報錯
print(list(13.14)) # 報錯
print(list('owen')) # ['o', 'w', 'e', 'n']
print(list({'name': 'owen', 'age': 20})) # ['name', 'age']
print(list((11,22,33,44,55))) # [11, 22, 33, 44, 55]
print(list({0,9,8,7})) # [0, 9, 8, 7]
print(list(True)) # 報錯
2 、常見操作
name_list = ['owen','kary','sendy','dancy']
1、 索引取值
print(name_list[0]) # 結果為'owen'
2、 切片操作
print(name_list[-3:-1]) # 結果為['kary', 'sendy']
3、 間隔
print(name_list[0:4:1]) # ['owen', 'kary', 'sendy', 'dancy']
print(name_list[0:4:3]) # ['owen', 'dancy']
4、 統計列表中元素的個數(len)
print(len(name_list)) # 結果為4
5、成員運算,最小判斷單位是元素不是元素裡的單個字元
print('o' in name_list) # 結果為False
print('owen' in name_list) # 結果為True
6、列表增加元素的方法
6.1、尾部追加'單個'元素(使用append)
name_list.append('小王')
print(name_list)
# 結果為 ['owen', 'kary', 'sendy', 'dancy', '小王']
6.2、指定位置插入'單個'元素(使用insert)
name_list.insert(0, '嗚呼')
print(name_list)
# 結果為 ['嗚呼', 'owen', 'kary', 'sendy', 'dancy']
6.3、合併列表(使用extend)
name_list.extend([123,456,789])
print(name_list)
# 結果為['owen', 'kary', 'sendy', 'dancy', 123, 456, 789]
""" extend可以看成是for迴圈+append """
7、刪除元素
7.1 通用的刪除方式(del)
del name_list[0]
print(name_list) # 結果為['kary', 'sendy', 'dancy']
7.2 就地刪除(remove) # 點名要直接刪除某個元素
name_list.remove('kary')
print(name_list) # 結果為['owen', 'sendy', 'dancy']
7.3 延遲刪除(pop)
print(name_list.pop()) # 結果為dancy,預設是尾部彈出
print(name_list.pop(2)) # 結果為sendy,可以指定索引值,但也是從尾部彈出
8、修改列表元素(id)
print(id(name_list[1])) # 結果為2488639686192
name_list[1] = 'owen123'
print(id(name_list[1])) # 結果為2488639686192
# 修改列表元素的地址還是一樣的
9、排序(sort)
l1 = [66,77,44,99,55,88]
l1.sort()
print(l1) # 結果顯示為[44, 55, 66, 77, 88, 99] 預設為升序
l1.sort(reverse=True) # 修改為降序
print(l1) # [99, 88, 77, 66, 55, 44]
10、翻轉(reverse)
l1 = [66,77,44,99,55,88]
l1.reverse() # 使列表元素前後翻轉
print(l1) # 結果為[88, 55, 99, 44, 77, 66]
11、比較運算
l1 = [11, 22, 33]
l2 = [1, 2, 3, 4, 5, 6, 7, 8]
print(l1 > l2) # 結果為True
'''列表之間作比較,其實比的就餓死對應索引位置上的元 素'''
12、統計列表中某個元素出現的次數(count)
l1 = [11,33,44,77,88,5,88,99,22,11]
print(l1.count(11)) # 統計元素11出現的次數 結果為2
可變型別與不可變型別
'''
可變型別與不可變型別
可變型別——列表
值改變 記憶體地址不變 修改的是本身
不可變型別——字串
值改變 記憶體地址肯定變因為 修改過程產生了新的值
'''
l1 = '***owen***'
print(l1.strip('*')) # 結果為 owen
print(l1) # 結果為***owen***
''' 變數沒有發生改變,只是產生一個新結果 '''
l2 = [1, 2, 3]
l2.extend([11, 22, 33, 44, 55]) # 結果為None
print(l2) # 結果為[1, 2, 3, 11, 22, 33, 44, 55]
佇列與堆疊
佇列:
先進先出 ,就像先排隊的先買到飯先走
new_list = []
# 先進
new_list.append(1)
new_list.append(2)
new_list.append(3)
# 先出
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())