国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Python基礎(chǔ)教程讀書筆記(2)第二章列表和元組

2019-11-14 17:12:08
字體:
供稿:網(wǎng)友

2.1序列概覽

列表和元組的主要區(qū)別在于,列表可以修改,元組則不能。也就是說如果要根據(jù)要求來添加元素,那么列表可能會更好用;而出于某些原因,序列不能修改的時候,使用元組則更為合適。使用后者的理由通常是技術(shù)性的,它與Python內(nèi)部的運作方式有關(guān)。這也是內(nèi)建函數(shù)可能返回元組的原因。一般來說,在幾乎所有的情況下列表都可以替代元組。

編寫一個列表:

>>> edward=['Edward Gumby',42]

構(gòu)建如下的一個人員信息的列表也是可以的,這個列表就是你的數(shù)據(jù)庫

>>> john=['John Simith',50]>>> database=[edward,john]>>> database[['Edward Gumby', 42], ['John Simith', 50]]

2.2通用序列操作

所有序列類型都可以進行某些特定的操作。這些操作包括:索引(indexing)、分片(sliceing) ,加(adding )、乘(multiplying)以及檢查某個元素是否屬于序列的成員(成員資格)。除此之外,Python還有計算序列長度、找出最大元素和最小元素的內(nèi)建函數(shù)。

2.2.1索引

序列中的所有元素都是有編號的—從0開始遞增。這些元素可以通過編號分別訪問:

>>> greeting='Hello'

>>> greeting[0]

'H'

字符串字面值(就此而言,其他序列字面量亦可)能夠直接使用索引,而不需要一個變量引用他們。

>>> 'Hello'[1]

'e'

如果一個函數(shù)調(diào)用返回一個序列,那么可以直接對返回結(jié)果進行索引操作。

>>> fourth=raw_input('Year:')[3]

Year: 2025

>>> fourth

'5'

實例:

#根據(jù)給定的年月日以數(shù)字形式打印出日期

>>> months=[

'January',

'February',

"March",

'A

month_number=int(month)

day_number=int(day)

#要將月份和天數(shù)減1,以獲得正確的索引

month_name=months[month_number-1]

ordinal=day+endings[day_number-1]

print month_name+''+ordinal+''+year

Year: 2015

Month(1-12:>? 5

Day(1-31):>? 13

May13th2015

2.2.2分片

與使用索引來訪問單個元素類似,可以使用分片操作來訪問一定范圍內(nèi)的元素。

>>> tag='https://d396qusza40orc.cloudfront.net/statistics'

>>> tag[23:37]

'cloudfront.net'

分片操作對于提取序列的一部分是很有用的。而編號在這里顯得尤為重要。第1個索引是需要提取部分的第1個元素的編號,而最后的索引則是分片之后剩下部分的第1個元素的編號:

>>> numbers=[1,2,3,4,5,6,7,8,9]

>>> numbers[3:6]

[4, 5, 6]

簡而言之,分片操作的實現(xiàn)需要提供兩個索引作為邊界,第1個索引的元素是包含在分片內(nèi)的,而第2個則不包含在分片內(nèi)。

1.優(yōu)雅的捷徑

假設(shè)需要訪問最后3個元素(根據(jù)先前的例子),那么當(dāng)然可以進行顯式的操作:

如果分片所得部分包括序列結(jié)尾的元素,那么,只需置空最后一個索引即可:

>>> numbers[-3:]

[7, 8, 9]

這種方法同樣適用于序列開始的元素:

>>>numbers[:3]

[1,2,3]

2.3列表

2.3.1list函數(shù)

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

2.3.2基本的列表操作

1.改變列表:元素賦值

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

>>> x[1]=2

>>> x

[1, 2, 1]

2.刪除元素

>>> names=['alice','beth','cecil','dee-dee','earl']

>>> del names[2]

>>> names

['alice', 'beth', 'dee-dee', 'earl']

3.分片賦值

>>> name=list('Perl')

>>> name

['P', 'e', 'r', 'l']

>>> name[2:]=list('ar')

>>> name

['P', 'e', 'a', 'r']

可以使用與原序列不等長的序列將分片替換:

>>> name=list('Perl')

>>> 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]

2.3列表方法

1.append

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

>>> lst.append(4)

>>> lst

[1, 2, 3, 4]

2.count

>>> ['to','be','or','not','to','be'].count('to')

2

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

>>> x.count(1)

2

>>> x.count([1,2])

1

3.extend

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

>>> b=[3,4,5]

>>> a.extend(b)

>>> a

[1, 2, 3, 3, 4, 5]

>>> a=a+b效果相同

4.index

>>> knights=['we','are','the','knights','who','say','ni']

>>> knights.index('who')

4

>>> knights[4]

'who'

5.insect

>>> numbers=[1,2,3,5,6,7]

>>> numbers.insert(3,'four')

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

6.pop

移除列表中的一個元素,默認(rèn)是最后一個

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

>>> x.pop()

3

>>> x

[1, 2]

7.remove

>>> x=['to','be','or','not','to','be']

>>> x.remove('be')

>>> x

['to', 'or', 'not', 'to', 'be']

8.reverse

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

>>> x.reverse()

>>> x

[3, 2, 1]

9.sort

>>> x=[4,5,3,1,7]

>>> x.sort()

>>> x

[1, 3, 4, 5, 7]

 

>>> x=[4,5,3,1,7]

>>> y=x[:]

>>> y.sort()

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

>>> y=x.sort()

>>> print y

None

應(yīng)該是:

>>> x=[4,5,3,1,7]

>>> y=x[:]

>>> y.sort()

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

獲取已排序的列表副本:

>>> x=[4,5,3,1,7]

>>> y=sorted(x)

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

10.高級排序

compare(x.y)函數(shù)會在x<y時返回負(fù)數(shù),在x>y時返回正數(shù),如果x=y則返回0

>>> cmp(40,33)

1

>>> cmp(33,40)

-1

>>> numbers=[5,2,9,7]

>>> numbers.sort(cmp)

>>> numbers

[2, 5, 7, 9]

2.4元組:不可變序列

如果你用逗號分隔了一些值,那么你就自動創(chuàng)建了元組。

>>> 1,2,3

(1, 2, 3)

>>> ()#空元組

()

2.4.1tuple函數(shù)

tuple函數(shù)的功能與list函數(shù)基本上是一樣的:以一個序列作為參數(shù)并把它轉(zhuǎn)換

 

為元組。

>>> tuple([1,2,3])

(1, 2, 3)

>>> tuple('abc')

('a', 'b', 'c')

2.4.2基本元祖操作

大致和序列類似

2.4.3元組的意義

元組可以在映射(和集合的成員)中當(dāng)作鍵使用—而列表則不行元組作為很多內(nèi)建函數(shù)和方法的返回值存在,也就是說你必須對元組進行處理。只要不嘗試修改元組,那么,“處理”元組在絕大多數(shù)情況下就是把它們當(dāng)作列表來進行操作(除非需要使用一些元組沒有的方法,例如index和count一般來說,列表可能更能滿足對序列的所有需求。

2.5小結(jié)

cmp(x, y)比較兩個值

len(seq)返回序列的長度

list(seq)把序列轉(zhuǎn)換成列表

max(args)返回序列或者參數(shù)集合中的最大值

min(args)返回序列或者參數(shù)集合中的最小值

reversed(seq)對序列進行反向迭代

sorted(seq)返回已排序的包含seq所有元素的列表

tuple(seq)把序列轉(zhuǎn)換成元組


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 分宜县| 南川市| 承德县| 平乡县| 拉萨市| 安顺市| 扬州市| 明溪县| 易门县| 大洼县| 南丰县| 普定县| 元朗区| 新沂市| 乐昌市| 江口县| 南涧| 乌恰县| 淳化县| 潼南县| 和龙市| 洛宁县| 牙克石市| 阳谷县| 阿瓦提县| 伊川县| 东兴市| 巴林左旗| 页游| 老河口市| 光泽县| 万宁市| 万源市| 昔阳县| 绥德县| 南丰县| 花垣县| 禄劝| 五台县| 南安市| 嘉鱼县|