一、字符串
與 C語言相比快骗,Python沒有字符類型娜庇,只有字符串類型。
Python中的字符串是用雙引號或單引號包裹的一串字符方篮。如:
s = 'a'
s = 'aaa'
s = "a"
s = "aaa"
s = '"""'
s = "'''"
s = "''"''"
注意到最后三個的單雙引號是嵌套使用的名秀,但是最后一個的使用方法是錯誤的,因為當我們混合使用兩種引號時必須有一種用來劃分字符串的邊界藕溅,即在兩邊的引號不能出現(xiàn)在字符串當中匕得,否則 Python解釋器會報錯。
1. 截取字符串
其他的語言中一般將截取字符串定義為一個方法巾表,比如 C語言中的 substr方法就可以返回字符串指定位置之間的一個字串汁掠。
但是在 Python中我們采用一種更簡潔直觀的方式,看如下代碼:
s = "i_am_a_sher."
print('s is:', s)
print('s[0]: ', s[0])
print('s[1:]: ', s[1:])
print('s[1:3]: ', s[1:3])
print('s[1::2]: ', s[1::2])
print('s[-1]: ', s[-1])
print('s[-3:-1]: ', s[-3:-1])
print('s[-3::2]: ', s[-3::2])
'''
s is: i_am_a_sher.
s[0]: i
s[1:]: _am_a_sher.
s[1:3]: _a
s[1::2]: _mase.
s[-1]: .
s[-3:-1]: er
s[-3::2]: e.
'''
在 Python中字符串被視為一個可迭代的對象集币,可迭代指實現(xiàn)了 iter接口考阱,可以直接使用for t in object
語法的對象,簡單來講可以把字符串看作一個存儲字符的數(shù)組鞠苟。
所以當我們打印s[0]
時會將字符串的第一個字母打印出來羔砾。
Python還為字符串切片提供了非常便利的操作,比如:
s[1:]
表示 s中第二個及以后的所有字符偶妖。
s[1:3]
表示 s中第二個到到第四個字符之間的所有字符(包括前者但不包括后者姜凄,即包括第二個但不包括第四個)。
s[1::2]
表示從 s中第二個字符開始取趾访,每移動兩個字符取一個态秧,所以我們?nèi)〉降慕Y(jié)果是第 2、4扼鞋、6申鱼、8、10個字符云头。
當給出的數(shù)字為負數(shù)時捐友,表示從字符串的末尾開始計數(shù),所以s[-1]
表示字符串倒數(shù)第一個字符溃槐。
這里使用 -1表示倒數(shù)第一個字符匣砖,0表示正數(shù)第一個字符(因為沒有 -0)。
當::
后面的數(shù)字為正時表示從左到右計數(shù),為負數(shù)時表示從右到左計數(shù)猴鲫。
2. 拼接字符串
拼接字符串我們直接使用+
对人,如:
s_1 = 'aaa'
s_2 = 'bbb'
print('s_1 + s_2:', s_1+s_2)
"""
s_1 + s_2: aaabbb
"""
3.字符串的常用方法
-
encode(str: codec)->bytes
:接受一個編碼字符串作為參數(shù),返回編碼后的二進制編碼拂共,如:
s.encode('utf-8')
-
split(str: spl)->list
:一給定的字符串 spl將原字符串分割為多個字串牺弄,并返回一個字串列表如:
s.split('_')
,結(jié)果為:['i', 'am', 'a', 'sher']
strip()
:去除字符串兩端的空字符(包括換行宜狐、空格势告、制表符等其他不可見的符號),lstrip()
和rstrip()
則分別去除字符串左邊和右邊的空字符抚恒。replace(str: old, str: new)->str
:替換字符串中的某些字串培慌,要替換的字串通過 old給出,用來替換的字串通過 new給出柑爸,如:s.replace('a', 'b')
的結(jié)果為:i_bm_b_sher.
-
join(list: l)->str
:用原字符串將給定的列表拼接成一個字符串吵护。如:
'_'.join(['i', 'am', 'a', 'sher.'])
的結(jié)果就是i_am_a_sher.
.
二、列表
Python中的列表和數(shù)組類似表鳍,不過與數(shù)組只能存儲一種元素相比馅而,一個列表中可以存儲任意元素,比如:
l = ['a', 1, ['a']]
在列表 l中我們存儲了三種數(shù)據(jù)類型譬圣,分別是字符串瓮恭、整數(shù)和列表
與數(shù)組相同的是,我們可以使用下表來訪問列表中的元素厘熟,比如:
l[0] # 'a'
l[1] # 1
l[2] # ['a']
l[3] # IndexError
同樣屯蹦,如果訪問了一個不存在的下標,程序就會拋出 IndexError錯誤绳姨。
1. 截取列表
截取列表的操作和截取字符串的操作完全相同登澜,可以參考截取字符串。
2. 合并列表
合并列表可以像拼接字符串一樣使用+
將兩個列表合并飘庄,如:
l_1 = [1,2,3,4]
l_2 = [5,6,7,8]
l_3 = l_1 + l_2
# l_3 = [1,2,3,4,5,6,7,8]
也可以使用 extend(list: l)
方法將要合并的列表直接追加到原來的列表后面脑蠕。
注意:extend()
方法沒有返回值,這個方法直接在原來的列表上進行操作跪削。
3. 列表的常用方法
append(any: element)
:向列表尾部添加一個元素insert(any: element, int: index)
:向列表中特定的位置插入一個元素谴仙,原來在那個位置的元素及其后面的所有元素均向后移動一個位置。index(any: element)->int
:返回所給元素在列表中從左到右第一個匹配的元素的位置碾盐,若所給元素不在列表中則拋出 ValueError錯誤晃跺。remove(any: value)
:將從左到右第一個匹配的元素從列表中移除,如果所給值不在列表中則拋出 ValueError錯誤毫玖。sort()
:將列表中的元素進行排序掀虎,直接在原列表中進行操作凌盯,沒有返回值。pop()
:從列表的右邊取出一個元素涩盾,并將該元素從列表中移除十气。-
reverse()
:反轉(zhuǎn)列表励背,如:l = [1,2,3,4,5] l.reverse() # l = [5,4,3,2,1]
-
關(guān)鍵字 in的使用:可以用關(guān)鍵字 in來判斷一個元素是否在列表中春霍,如:
l = [1,2,3,4,5] 1 in l # True 6 in l # False #可以使用 in和 index()配合來獲取元素在列表中的位置 def indexOf(l, element): if element in l: index = l.index(element) else: index = -1 return index #可以使用 in和 remove()將元素從列表中移除 def remove(l, element): if element in l: l.remove(element) else: pass
-
for遍歷列表, 如:
l = [1,2,3,4,5,6,7,8] # 如果要將 l中的元素逐個打印出來叶眉,其他的方法是: for i in range(len(l)): print(l[i]) # 但是在 python中不需要這么麻煩 for t in l: print(l)
三址儒、練習
1. 日期格式轉(zhuǎn)換
有多種日期格式:2018/10/28、2018.10.28衅疙、20181028莲趣、2018-10-28
現(xiàn)在我們需要編寫一個程序?qū)⑶叭N格式轉(zhuǎn)換為第四種格式。
要求:
- 不能使用 python類庫
- 將代碼封裝成一個函數(shù):
date_trans(str: date)->str
接受一個字符串輸入饱溢,輸出第四種日期格式 - 需要處理不規(guī)范輸入引起的錯誤喧伞,當遇到不規(guī)范輸入時拋出 ValueError錯誤并給出提示
2. 雙向隊列
現(xiàn)有函數(shù)簽名:b_pop(list: l, str: direction)
該函數(shù)實現(xiàn)的功能是:當 direction的值為 'left'
時從列表的左邊取出一個元素返回,當 direction的值為 'right'
時從列表的右邊取出一個元素返回绩郎,當列表為空時返回 None
潘鲫。
要求:
- 在取出元素前后列表原有的元素排列方向不變
- 當 l和 direction的值非法時拋出 ValueError錯誤并給出提示