1. 程式人生 > >序列——列表和元組(二)

序列——列表和元組(二)

highlight 字符 say 操作 val 2.3 不存在 一個 位置

1、列表:Python的“苦力”

 1.1 list函數

  >>>list(‘Hello‘)

  [‘H‘,‘e‘,‘l‘,‘l‘,‘o‘]

  註意,list函數適用於所有類型的序列,而不只是字符串。

  提示 可以使用‘‘.join(somelist)將一個由字符組成的列表轉換為字符串。

 1.2改變列表:元素賦值

  >>>x=[1,1,1]

  >>>x[1]=2

  >>>x

  [1,2,1]

  註意,不能為一個位置不存在的元素進行賦值。如果列表長度為2,那麽不能為索引為100的元素進行賦值。

 1.3刪除元素

>>>names=[‘Alice‘,‘Bech‘,‘Cecil‘,‘Dee-Dee‘,‘Earl‘]
>>>del names[2]
>>>names
[‘Alice‘,‘Bech‘,‘Dee-Dee‘,‘Earl‘]

 1.4分片賦值

  程序可以一次為多個元素賦值,可以使用與原序列不等長的序列將分片替換

>>>name=list(‘Perl‘)
>>>name[2:]=list(‘ar‘)
>>>name
[‘P‘,‘e‘,‘a‘,‘r‘]

>>>name[1:]=list(‘ython‘)
>>>name
[‘P‘,‘y‘,‘t‘,‘h‘,‘o‘,‘n‘]
#分片賦值語句可以在不需要替換任何原有元素的情況插入新的元素;
>>>numbers=[1,5]
>>>numbers[1:1]=[2,3,4]
>>>numbers
[1,2,3,4,5]
#以此類推,通過分片賦值刪除元素也是可以的
>>>numbers[1:4]=[]
>>>numbers
[1,5]
#上面的例子的結果和del numbers[1:4]的一樣。也可以利用1之外的步長,甚至是負數進行分片。

2、列表方法

  方法是一個與某些對象有緊密聯系的函數,對象可能是列表、數字,也可能是字符串或者其他類型的對象。一般來說,方法可以這樣進行調用:對象.方法(參數)

 2.1 append 該方法用於在列表末尾追新的對象:

>>>lst=[1,2,3]
>>>lst.append(4)
>>>lst
[1,2,3,4]

 2.2 count 該方法統計某個元素在列表中出現的次數

1 >>>[to,be,or,not,to,be].count(to)
2 2
3 >>>x=[[1,2],1,1,[2,1,[1,2]]]
4 >>>x.count(1) 5 2 6 >>>x.count([1,2]) 7 1

 2.3 extend 該方法可以在列表的末尾一次性追加另一個序列中的多個值。換句話說,可以用心列表擴展原有的列表:

 1 >>>a=[1,2,3]
 2 >>>b=[4,5,6]
 3 >>>a.extend(b)
 4 >>>a
 5 [1,2,3,4,5,6]
 6 #這個操作看起來很像連接操作,兩者最主要的區別在於:extend方法修改了被擴展的序列a。#而原始的連接操作則不然,它僅僅會返回一個全新的列表:
 7 >>>a=[1,2,3]
 8 >>>b=[4,5,6]
 9 >>>a+b
10 [1,2,3,4,5,6]
11 >>>a
12 [1,2,3]
13 #當然也可以如下操作,但是連接操作的效率會比extend方法低。
14 >>>a=a+b
15 #我們可以使用分片賦值來實現相同的結果:
16 >>>a=[1,2,3]
17 >>>b=[4,5,6]
18 >>>a[len(a):]=b
19 >>>a
20 [1,2,3,4,5,6]
21 #雖然以上操作也可以,但是代碼的可讀性不如extend方法了

 2.4 index 該方法用於從列表中找出某個值第一個匹配項的索引位置:

>>>knights=[we,are,the,knights,who,say,in]
>>>knights.index(who)
4
>>>knights.index(herring)
valueError: list.index(x):x not in list
#獲取不存在於列表中的元素索引會拋錯

 2.5 insert 該方法用於將對象插入到列表中:

1 >>>numbers=[1,2,3,5,6,7]
2 >>>numbers.insert(3,four)
3 >>>numbers
4 [1,2,3,four,5,6,7]
5 #與extend方法一樣,insert方法的操作也可以用分片賦值來實現。
6 >>>numbers=[1,2,3,5,6,7]
7 >>>numbers[3:3]=[four]#不可以寫成numbers[3:3]=‘four‘,否則結果變成[1,2,3,‘f‘,‘o‘,‘u‘,‘r‘,5,6,7]
8 >>>numbers
9 [1,2,3,four,5,6,7]

 2.6 pop 該方法會移除列表中的一個元素(默認是最後一個),並且返回該元素的值:

1 >>>x=[1,2,3]
2 >>>x.pop()
3 3
4 >>>x
5 [1,2]
6 >>>x.pop(0)
7 1
8 >>>x
9 [2]

  pop方法是唯一一個既能修改列表又返回元素值(除了None)的列表方法。[None,None].pop()就不會返回值。

pop和append方法的操作結果恰好相反,如果入棧剛剛出棧的值,最後得到的結果還是原來的棧:

  >>>x=[1,2,3]

  >>>x.append(x.pop())

  >>>x

  [1,2,3]

序列——列表和元組(二)