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)換成元組