序列
Python有6中內建的序列,在這里我們重點討論兩種,數組和元組。所有序列都可以做某些特定的操作,大致上常用的是:加,乘,索引,分片以及檢查某個元素是否屬於序列的成員。
Python還提供一些內建函數來計算序列長度,找出最大值與最小值。
注意:所有的序列都是從0開始遞增。
索引
序列中的元素都是有編號的,且編號是從0開始,從左往右數,最后一個為length-1.
從右往左數,因為首元素為0,所以最后一個元素應該為-1.
example:
我認為索引最值得引人注目的地方就是,字符串字面值能夠直接使用索引
hello[1]
結果:e
分片
索引用來訪問單個元素,用分片來訪問一定范圍內的元素。分片用:隔開。
所有的分片操作都有兩個索引邊界number[3:6]
第一個邊界包含在內,第二個邊界不包含在內。
分片操作可以設置步長,默認步長為1,number[3:6:2]
與matlab不同的是,python分片的步長為第三個參數。當你是用例如number[:6:2]
或者number[2::2]
以及
number[::2]
這樣省略邊界的分片時,默認是從列表的首尾位置開始分片。
分片也可以用負值,在這里不做介紹。
序列相加
兩種相同類型的序列是可以相加的,不同類型的不可以相加。
[1,2,3]+[4,5,6]
序列相乘
用一個數字x乘以一個序列生成新的序列,而在新的序列中,原來的序列被重復X次
example:
python*5
None,空列表以及初始化
在數組(列表)中可以用[]——來表示里面什么都沒有。如果想要創建10個這樣的占位空間,就可以用[]*10來占位或者[0]*10來占位。
若要占一個空間,且里面沒任何元素,就可以用None來占位
[None]*10
成員資格,長度len,最小值min,最大值max
成員資格用 in 運算符,這個運算符來檢驗某個條件是否為真,然后返回相應的值:True與False.
len,max,min,接受的是一個序列
序列的大兒子,列表(數組)
數組
數組也叫列表,用[]來表示,數組中所存的數據是可變的,python 中的數組與matlab中的數組是一樣的含義,都是用[]來表示。
列表這種數據結構適合於將值組織到一個結構中,並且通過編號對其引用。
數組可變就是說,當一個數組被創建后,是可以被修改的。數組是序列的大兒子,只要是序列所有的功能,數組都完美的繼承,並發揚光大。
數組的各種方法與分片,索引的具體內容,在這里就不詳細說明,有時間再說。
序列的閨女,元組
元組是用()來存儲數據。元組是一種不可變的序列。創建一個元組,只需要輸入1,2,3
1,2,3
或者(1,2,3)
,空元組的表示方法為()
注意如果元組里面有元素,結尾一定要加,(3,)
元組的乘法與普通乘法的比較:
Out[19]: 126
3*(40+2,)
Out[20]: (42, 42, 42)
字典,到處亂射的大兄弟
字典是一種通過名字來引用值得數據結構。是python唯一內建的映射類型。用{}來表示。無特殊的順序,都存儲在一個特定的鍵(Key)中。鍵可以是數字,字符串,元組。
字典的創建
字典的鍵與值用:隔開,項與項之間用逗號(,)。空字典就像這樣:{}
注意字典中的鍵是唯一的,值不唯一。
可以用dict函數,通過其他映射(比如其他字典)或者(鍵,值)對的序列建立字典。
items=[('name','G'),('age',42)]
d=dict(items)
d
Out[23]: {'age': 42, 'name': 'G'}
dict函數也可以通過關鍵字參數來創建字典。
d=dict(name=’G’,age=42)
d
Out[25]: {‘age’: 42, ‘name’: ‘G’}
字典也有很多與序列相似的基本操作,如
len(d) 返回d中項(鍵-值對)的數量
d[k] 返回關聯到鍵k上的值
d[k]=v 將值v關聯到 鍵k上
del d[k] 刪除鍵為k的項
del d['age']
d
Out[28]: {'name': 'G'}
k in d 檢查d中是否含有鍵位k的項
#字典與數組的異同
##鍵類型:字典的鍵是可以任意的不可變類型,如浮點型,實型,字符串,或者元祖。
##自動添加:字典可以任意的往字典里添加鍵值對,而不需要使用append方法。
##成員資格:表達式 k in d **(d{}是字典類型)**查找的是鍵,而不是值。如果表達式 k in d **(d[]是數組)**查找的是值。
example:
people={‘Alice’:{‘phone’:2341,’addr’:’Foo drive 23’},
‘Beth’:{‘phone’:’9102’,’addr’:’Bar street’},
‘Cecil’:{‘phone’:’3218’,’addr’:’Baz ave’}}
labels={‘phone’:’phone number’,’addr’:’address’}
name=raw_input(‘name:’)
request=raw_input(‘phone number(p)or address(a)?’)
if request==’p’:key=’phone’
if request==’a’:key=’addr’
if name in people:print”%s’s %s is %s.” \
%(name,labels[key],people[name][key])