1. 程式人生 > >序列的通用操作

序列的通用操作

不同類 占用 變量 基本 number NPU 個數字 unicode RR

python中最基本的數據結構就是序列,python中包含6種內建序列,即列表,元組,字符串,Unicode字符串,buffer對象和xrange對象

下列操作對於所有python中所有的序列都適用:包括索引(index),切片(slicing),序列相加(adding),乘法(multiplying),成員資格,長度,最小值和最大值

一.索引

索引用來對單個元素進行訪問,既可以對變量的引用操作,也可以直接操作序列,還可以操作函數的返回序列

1.對變量的引用操作:

>>> greeting=‘hello‘
>>> print(greeting[0])
h
>>> print(greeting[1])
e

2.直接操作序列:

>>> ‘hello‘[0]
‘h‘

>>> ‘hello‘[2]
‘l‘

3.操作函數的返回序列

>>> a=input()[0]
hello
>>> a
‘h‘

關於索引方向,python中的序列既可以從左向右索引,也可以從右向左索引,當從右向左索引時,最後一個元素的編號為-1

>>> greeting="hello"
>>> greeting[-1]
‘o‘
>>> greeting[-2]
‘l‘

二.切片

索引用來對單個元素進行訪問,使用切片可以對一定範圍的元素進行訪問,切片通過冒號相隔的兩個索引實現

>>> number=[1,2,3,4,5,6,7]
>>> number[1:3]
[2, 3]

>>> number[-3:-1]
[5, 6]

可見,切片操作既支持正數索引也支持負數索引,切片操作的實現需要提供兩個索引 作為邊界,第一個索引的元素包含在切片內,第二個索引的元素不包含在切片內,像數學裏的a≥x<b

當用負數索引時,如果想輸出到最後一個元素,可以將第二個索引設置為空,這也適用於正數索引

>>> number=[1,2,3,4,5,6,7]
>>> number[-3:]
[5, 6, 7]

若要取得整個序列,將兩個索引都設置為空:

>>> number=[1,2,3,4,5,6,7]
>>> number[:]
[1,2,3,4,5, 6, 7]

還可以設置第三個索引值,為步長,步長設置大於1的數時,會得到一個跳過某些元素的序列。步長不能為0,會報錯

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[0:10:2]
[1, 3, 5, 7, 9]

步長也可以為負數,步長為負數時,從序列的尾部開始向左提取元素,直到第一個元素,也就是和正數步長輸出的順序相反

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[9:0:-1]
[10, 9, 8, 7, 6, 5, 4, 3,2]

可見,使用負數步長時,設置第二個索引為0,取不到序列中的第一個元素,只有設置第二個索引為空才行

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[9::-1]
[10, 9, 8, 7, 6, 5, 4, 3,2,1]

三.序列相加

使用‘+’可以進行序列的連接操作

>>> [1,2,3]+[2,3,4]
[1, 2, 3, 2, 3, 4]

>>> ‘hello‘+‘world‘
‘helloworld‘

但是不能將列表和字符串相加

>>> [1,2,3]+‘hello‘
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
[1,2,3]+‘hello‘
TypeError: can only concatenate list (not "str") to list

只有類型相同的序列才能通過加號進行序列連接操作,不同類型序列不能通過加號進行序列連接操作。

四.乘法

用一個數字乘以一個序列會生成新的序列,在新的序列中,原來的序列將被重復x次,這就是序列中的乘法

>>> ‘hello‘*5
‘hellohellohellohellohello‘
>>> [1,2]*4
[1, 2, 1, 2, 1, 2, 1, 2]

可以用來創建占用10個或更多元素空間的空列表,如[]*10

還可以用來初始化一個長度為x的序列,這時候就需要讓每個編碼位置上都為空值,此時需要一個值代表空值,即裏面沒有任何元素,可以使用None

如:

>>>a=[None]*5

[None,None,None,None,None]

五.成員資格

為了檢查一個值是否在序列中,python為我們提供了in運算符

>>> greeting=‘hello world‘
>>> name=[‘xiao‘,‘ming‘,‘tony‘]
>>> number=[1,2,3,4,5]
>>> 1 in name
False
>>> ‘xiao‘ in name
True
>>> ‘h‘ in greeting
True
>>> ‘ ‘ in greeting
True
>>> 1 in greeting
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
1 in greeting
TypeError: ‘in <string>‘ requires string as left operand, not int

可見,數字類型不能在字符串類型中通過in進行成員資格檢測,而字符串類型可以在數字列表中通過in進行成員資格檢測

六.長度,最大值和最小值

>>> number=[1,2,3,4,5]
>>> len(number)
5
>>> max(number)
5
>>> min(number)
1
>>> max(1,2,3,4,5)
5
>>> min(1,2,3,4,5)
1

序列的通用操作