先從序列講起
在Python中最基本的資料結構為序列,序列中每個元素都有編号,其位置即為索引。那什麼是資料結構呢,資料結構就是以某種方式組合起來的資料元素集合,在Python中内置了許多序列包括字元串,清單、元組。
序列的通用操作
有幾種操作适用于所有序列,包括 索引,切片,相加,相乘和成員資格檢查 另外。Python還提供了一些内置函數,可以用于計算序列長度并求出序列中最大最小元素
索引
>>>a = 'hello'
>>>a[2]
'l'
可使用索引擷取元素,對于a[2]還有一種表達方式:
>>>a[-3]
'l'
使用負數進行索引時,Python從右往左數,-1是第一個元素的位置
對于字元串字面量可直接進行索引操作:
>>>'hello'[1]
'e'
切片
使用切片可擷取一定範圍内的元素例如:
>>> s = [1,2,3,4,5,6,7]
>>>s[1:3]
[2,3]
切片由兩個索引提供範圍,在實際傳回數值過程中第二個索引的指定的元素不包括在切片内
python對于切片中兩個索引也是有一定要求的例如
>>>s[-3:0]
[]
為什麼會出現這種情況呢原因是在執行切片操作時,如果第一個索引所指定的元素位于第二個索引所指定元素後面結果就是空序列。
另外,當切片結束于序列開頭或結尾是可以省略開頭或結尾的索引,例如:
>>>s[:3]
[1,2,3]
在切片操作時還有一個參數,即步長
例如:
>>>s[::4]
[1,5]
第三個參數的意思就是步長,步長為4的意思是隔三個元素提取一個,步長不能為零,但可以為負,為負的意思是從右向左提取元素例如:
>>>s[::-4]
[7,3]
特别注意的是 __當步長是負數時索引序号不變,隻是切片時注意第一個索引必須大于第二個索引即第一個索引必須位于第二個索引後面例如:
>>>s[4:1:-1]
[5,4,3,2]
序列的加法
序列拼接可用加法來實作
例如:
>>>[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
>>>'hello'+'world'
'helloworld'
特别注意的是 序列拼接隻能是相同類型如果不同類型間使用加法進行拼接就會出錯
例如:
>>>[1,2,3]+'hello'
TypeError
序列的乘法
序列的乘法表示的是将這個序列重複n次 例如:
>>>'s'*5
'sssss'
>>>[2]*10
[2,2,2,2,2,2,2,2,2,2]
成員資格
檢查特定的值是否包含在序列中,例如:
>>>s=[1,2,3,4,5,6]
>>>1 in s
True
長度 ,最大值,最小值
擷取序列的長度,最大值,最小值是通過内置函數len,min和max函數實作的例如:
>>>s = [1,2,3,4]
>>>len(s)
4
>>>max(s)
4
>>>min(s)
1
字元串
作為序列,所有的序列操作都适用于字元串,另外 字元串是不可變的,是以指派操作都是非法的 例如:
>>>h = 'hello'
>>>h[2] = 'e'
TypeError: 'str' object does not support item assignment
字元串格式
替換字段
對字元串調用方法format
例如:
>>>“{ } { a } { } { b }”.format(1,2,a=3,b=4)
'1324'
>>>"{1}{a}{0}{b}".format(1,2,a=3,b=4)
'2314'
基本轉化
可以指定要轉換成哪種類型例如:
>>>"The number is{a}".format(a=2)
'The number is 2'
>>>“The number is{a:b}”.format(a = 2)
'The number is 0010'
常用指定類型 | |
---|---|
類型 | 含義 |
b | 二進制數 |
c | 解讀為unicode碼點 |
d | 預設為十進制數處理 |
e | 科學計法表示小數 |
E | 與e相同 |
f | 小數表示為定點數 |
寬度,精度和千分位分隔符
在格式說明中指定寬度和精度,例如:
>>>"{n:5}".format(n=2)
' 2'
用逗号指出要指定的千位分隔符,放在寬度與表示精度的句點之間
>>>"one googl is {:,}".format(1000000)
'one googl is 1,000,000'
符号,對齊和用零填充
>>>"{:010.2f}".format(pi)
'0000003.14'
指定左對齊,右對齊和居中分别使用<,>,^
例如:
>>>print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(pi))
3.14
3.14
3.14
也可使用指定字元填充
>>>“{:$^15}”.format(" win big ")
’$$$ win big $$$‘
>>> "{{:{}}}".format(12)
'{:12}'
字元串方法
center
方法center通過在兩邊添加填充字元(預設為空格)讓字元串居中
>>>"hello".center(11)
' helo '
find
在字元串中查找子串,若找到傳回子串第一個字元的索引,否則傳回-1
>>>“hello”.find('ll')
2
>>>“hello”.find('lp')
-1
還可指定搜尋起點與終點
>>>“heloo”.find('lo',1,4)
2
join
用于合并序列元素,與split相反
>>>'+'.join(['2','3'])#合并成一個字元串清單
'2+3'
所合并的元素必須都是字元串
lower
傳回字元串的小寫版本,例如:
>>>"HYlou".lower()
'hylou'
__.title__方法用于把詞首變為大寫
replace
将指定子串都替換為另一個字元串并傳回替換後的結果
>>>“I Love j”.replace('j','you')
'I Love you'
split
将字元串拆分
>>> '1+2+3+4+5'.split('+')
['1','2','3','4','5']
傳回數列
strip
字元串開頭和末尾的空白(不包括中間的空白)删除,并傳回删除後的結果
>>>" hello ".strip()
'hello'
還可指定想删除的元素
translate
可進行單字元替換,可同時替換多個字元
>>>table = str.marktrans('cs','kz')#将字元c,s分别替換為k,z