💡
本質上就是二進制數據與語言文字的一一對應關係
Unicode:所有字符都是2個字節,好處是字節和數字之間轉換更快,但占用空間大
UTF-8:不同字符用不同長度表示,優點和缺點和Unicode相反
編碼:encode()
將其他編碼的字符串轉換成Unicode編碼
解碼:decode()
將Unicode編碼轉換成其他編碼的字符串
a = "hello"
print(a , type(a)) # str,字符串是以字符為單位進行處理
a1 = a.encode() # 編碼
print(f'編碼後:{a1}')
print(a1 ,type(a1)) # bytes,變成以字節為單位進行處理
a2 = a1.decode() # 解碼
print(type(a2))
# 注意:對於bytes,只需要知道它與字符串類型之間的互相轉換
xxxxxxxxxx
mo = "我目前在澳門"
mo1 = mo.encode('utf-8')
print(mo1, type(mo1))
mo2 = mo1.decode('utf-8')
print(mo2, type(mo2))
xxxxxxxxxx
print(1 + 1) # 整數相加,+是算術運算符
print("Pan-Indochina" + "Earthscraper" + "Museum") # 字符串相加,+是字符串拼接
name1 = "超級"
name2 = "鐵路"
print(name1 + name2)
輸出結果:
xxxxxxxxxx
2
Pan-IndochinaEarthscraperMuseum
超級鐵路
xxxxxxxxxx
print("我最叻\n" * 5) # \n換行
輸出結果:
xxxxxxxxxx
我最叻
我最叻
我最叻
我最叻
我最叻
💡
作用:檢查字符串中是否包含了某個子字符串(可以是一個或多個字符)
in:如果包含的話,返回True;不包含返回False
not in:如果不包含的話,返回Ture;包含返回False
xxxxxxxxxx
name = "Pan-Indochina Earthscraper Museum"
print('b' in name) # False
print('E' in name) # True
print('b' not in name) # True
print('Indo' in name) # 多個字符,返回True
💡 Python中下標從0開始
作用:通過下標能夠快速找到對應的數據
格式:字符串名[下標值]
xxxxxxxxxx
e = "Earthscraper"
print(e[0]) # 索引字符串中的字符,由左往右數,下標由0開始
print(e[-2]) # 由右至左數,下標由-1開始
💡
含義:針對操作的對象截取其中一部分
語法:[開始位置:結束位置:步長]
❗ 注意:包前不包後原則
xxxxxxxxxx
print(e[1:7]) # 包前不包後原則,只有6個字符
print(e[5:]) # 截取第5位(第6個字符)至最後一位
print(e[-2:]) # 截取-2位至(右邊)最後一位
print(e[:-2]) # 截取(左邊)至-2位
輸出結果:
xxxxxxxxxx
arthsc
scraper
er
Earthscrap
步長的絕對值決定間隔,符號決定方向
💡
xxxxxxxxxx
print(e[1::3]) # 自第二位,從左往右每3位取一字符
print(e[::-2]) # 自右邊,從右往左每2位取一字符
輸出結果:
xxxxxxxxxx
ahre
rprsta
💡
find()
功能:檢查某個「子字符串」是否包含在字符串中,如果在就返回「子字符串」開位始置的下標,否則就返回-1
格式:find(子字符串,開始位置下標,結束位置下標)
❗ 開始和結束位置下標可以省略,此時表示在整個字符串查找
xxxxxxxxxx
name = 'Valentine'
print(name.find('i')) # 第1個i的下標為6
print(name.find('ent')) # 第一個ent,e的下標為3
print(name.find("i",7)) # 唯一的i的下標為6,沒有找到,因此返回-1
print(name.find('n',6,8)) # 在下標6至8的字符串中,第一個n的下標是7
輸出結果:
xxxxxxxxxx
6
3
-1
7
💡
index()
功能:檢測某個子字符串是否包含在字符串中,在就返回子字符串開始位置的下標,否則報錯
格式:index(子字符串,開始位置下標,結束位置下標)
xxxxxxxxxx
name1 = "長崎良尾約咗川口督史食飯"
print(name1.index('良'))
# print(name.index('約',1,3)) # 約字的下標是4,此行直接報錯
print(name1.index('約',1,6))
輸出結果:
xxxxxxxxxx
2
4
💡
count()
功能:返回某個子字符串在整個字符串中出現的次數,沒有就返回0
格式:count(子字符串,開始位置下標,結束位置下標)
xxxxxxxxxx
name2 = "earthscraper"
print(name2.count('e')) # 2個
print(name2.count('e',1,6)) # 沒找到
print(name2.count('r',2,12)) # 找到3個
輸出結果:
xxxxxxxxxx
2
0
3
💡
startswith()
功能:是否以某個子字符串開頭,是的話就返回True,不是的話就返回False。如果設置開始和結束位置,則在指定範圍內檢查
格式:startswith(子字符串,開始位置下標,結束位置下標)
xxxxxxxxxx
name3 = "earthscraper"
print(name3.startswith('e')) # 返回True,因為字符串的確以e開頭
print(name3.startswith('esr')) # False
print(name3.startswith('e',0,1)) # True
print(name3.startswith('e',4,10)) # False
輸出結果:
xxxxxxxxxx
True
False
True
False
💡
endswith()
功能:是否以某個子字符串結尾,是的話就返回True,不是的話就返回False。如果設置開始和結束位置,則在指定範圍內檢查
格式:endswith(子字符串,開始位置下標,結束位置下標)
使用方式大致與startswith()相同
xxxxxxxxxx
name3 = "earthscraper"
print(name3.endswith('e'))
輸出結果:
xxxxxxxxxx
False
💡
isupper()
功能:檢查字符串中所有的字母是否都為大寫,是的話就返回True
xxxxxxxxxx
name4 = "VICTORIA"
print(name4.isupper())
輸出結果:
xxxxxxxxxx
True
💡
replace()
功能:替換
語法:replace(舊內容,新內容,替換次數)
❗
替換次數可以省略,默認全部替換
xxxxxxxxxx
name = "好好學習,天天向上"
print(name.replace('天','月'))
print(name.replace('天','月',1))
輸出結果:
xxxxxxxxxx
好好學習,月月向上
好好學習,月天向上
💡
split()
功能:指定分隔符來切字符串
xxxxxxxxxx
st = "hello,python"
print(st.split(",")) # 以列表的方式返回['hello', 'python']
print(st.split("v")) # 如果字符串中不包含分割內容,就不進行分割,會作為一個整體
print(st.split("o",1)) # 指定分割次數
輸出結果:
xxxxxxxxxx
['hello', 'python']
['hello,python']
['hell', ',python']
💡
capitalize()
功能:第一個字符大寫,其他都變小寫(無論原先如何)
xxxxxxxxxx
st = "victoria"
print(st.capitalize())
輸出結果:
xxxxxxxxxx
Victoria
💡
lower()
功能:大寫字母轉為小寫
xxxxxxxxxx
st = "VICTORIA"
print(st.lower())
輸出結果:
xxxxxxxxxx
victoria
💡
upper()
功能:小寫字母轉為大寫
xxxxxxxxxx
st = "victoria"
print(st.upper())
輸出結果:
xxxxxxxxxx
VICTORIA
📌 基本格式:
列表名 = [元素1,元素2,元素3,...]
❗ 所有元素放在[]內,元素之間用,隔開
元素之間的數據類型可以各不相同
xxxxxxxxxx
l1 = [ 1 , 2 , '3' , 4]
print(l1, type(l1))
print(l1[2])
# 列表也可以進行切片操作
print(l1[0:3])
# 列表是可迭代對象,可以for循環遍歷取值
for i in l1:
print(i)
輸出結果:
xxxxxxxxxx
[1, 2, '3', 4] <class 'list'>
3
[1, 2, '3']
1
2
3
4
💡 append() extend() insert()
append()
xxxxxxxxxx
l2 = ['one', 'two', 'three']
l2.append('four') # 整體作為一個元素添加
# l2.append(['1','2']) # 不能插入多個元素
print(l2)
輸出結果:
xxxxxxxxxx
['one', 'two', 'three', 'four']
extend()
xxxxxxxxxx
l2.extend(['five', 'six', 'seven'])
l2.extend('eight') # 分散添加,將另外一個類型中的元素逐一添加
print(l2)
輸出結果:
xxxxxxxxxx
['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'e', 'i', 'g', 'h', 't']
insert()
xxxxxxxxxx
l2.insert(7, 'eight') # 指定位置插入元素,如果有元素,原有元素後移
print(l2)
l2.insert(15, 'ten') # 超過列表長度,就插入為最後一位
print(l2)
l3 = [1,2,3]
l3.extend([4]) # 不能extend(4),會報錯
l3.insert(4,5)
print(l3)
輸出結果:
xxxxxxxxxx
['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'e', 'i', 'g', 'h', 't']
['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'e', 'i', 'g', 'h', 't', 'ten']
[1, 2, 3, 4, 5]
insert()
xxxxxxxxxx
# 直接通過下標就可以修改
l4 = [1 ,2, 3]
print(l4[1])
l4[1] = "a"
print(l4)
輸出結果:
xxxxxxxxxx
2
[1, 'a', 3]
💡
in:判斷指定元素是否存在列表中,如果存在的話就返回True,不存在就返回False
not in:與in相反
xxxxxxxxxx
# 直接通過下標就可以修改
l4 = [1 ,2, 3]
print(l4[1])
l4[1] = "a"
print(l4)
輸出結果:
xxxxxxxxxx
True
False
用戶輸入昵稱,昵稱重覆則不能使用
xxxxxxxxxx
# 定義一個列表,保存已經存在的昵稱
name_list = ['Adam', 'Ben', 'Catherine', 'Dennis']
while True:
name = input('請輸入你的昵稱:')
# 判斷昵稱是否已存在
if name in name_list:
print(f'您輸入的昵稱{name}已經存在,請重新輸入:')
# 如果昵稱不存在
else:
print(f'昵稱{name}已經被您使用。')
# 保存昵稱至列表
name_list.append(name)
print(name_list)
# 打破循環
break
輸出結果:
xxxxxxxxxx
請輸入你的昵稱:123
昵稱123已經被您使用。
['Adam', 'Ben', 'Catherine', 'Dennis', '123']
💡
index:返回指定數據所在位置的下標,如果查找的數據不存在就會報錯
count:統計指定數據在當前列表出現的次數
del:根據下標刪除
xxxxxxxxxx
l6 = ['a', 'b', 'c', 'd']
del l6[2]
print(l6)
輸出結果:
xxxxxxxxxx
['a', 'b', 'd']
pop:刪除指定下標的數據,python3版本默認刪除最後一個元素
xxxxxxxxxx
l7 = ['a', 'b', 'c', 'd']
l7.pop() # 點認刪除最後一個元素
l7.pop(1) # 不能指定元素刪除,只能根據下標進行刪除,下標不能超出範圍
print(l7)
輸出結果:
xxxxxxxxxx
['a', 'c']
remove:根據元素的值進行刪除
xxxxxxxxxx
l8 = ['a', 'b', 'c', 'd', 'b']
l8.remove('a')
# l8.remove('t') # 列表中不存在元素就會報錯
print(l8)
l8.remove('b') # 默認刪除最開始出現的元素
print(l8)
輸出結果:
xxxxxxxxxx
['b', 'c', 'd', 'b']
['c', 'd', 'b']
sort:將列表按特定順序重新排列,默認從小到大
xxxxxxxxxx
l9 = [46,38,2,199,94,9,134,76]
l9.sort()
print(l9)
輸出結果:
xxxxxxxxxx
[2, 9, 38, 46, 76, 94, 134, 199]
reverse:倒序,將列表倒置(反過來)
xxxxxxxxxx
l9 = [2, 9, 38, 46, 76, 94, 134, 199]
l9.reverse()
print(l9)
輸出結果:
xxxxxxxxxx
[199, 134, 94, 76, 46, 38, 9, 2]
💡 基本寫法:
格式一:[表達式 for 變量 in 列表]
注意in後面不僅可以放列表,還可以放range()、可迭代對象
xxxxxxxxxx
l10 = [1,2,3,4,5,6]
[print(i) for i in l10] # 前面的i是表達式
l11 = []
for i in range(1, 6):
print(i)
l11.append(i)
print(l11)
l12 = []
[l12.append(i) for i in range(1, 6)]
print(l12)
輸出結果:
xxxxxxxxxx
1
2
3
4
5
6
1
2
3
4
5
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
💡
格式二:[表達式 for 變量 in 列表 if 條件]
xxxxxxxxxx
l12 = []
for i in range(1,11):
if i % 2 == 1:
l12.append(i)
print(l12)
l13 = []
[l13.append(i) for i in range(1, 6) if i % 2 == 1]
print(l13)
輸出結果:
xxxxxxxxxx
[1, 3, 5, 7, 9]
[1, 3, 5]
含義:一個列表裡面又有一個列表
xxxxxxxxxx
l14 = ['1', '2', '3', ['4', '5', '6'], '7', '8', '9', '10'] # ['4', '5', '6']是內層列表
print(l14[3])
print(l14[3][0]) # 取出內列表中下標為0的元素
輸出結果:
xxxxxxxxxx
['4', '5', '6']
4
目的地 | 超連結 |
---|---|
首頁 | 返回主頁 |
Python學習 | Python學習 |
上一篇 | 05 - 循環語句 |
下一篇 | 07 - 元組、字典、集合 |