Python序列類型 list[] tuple()

序列類型–list[] tuple()

上一節講解的字符串類型,可以通過slice切片、索引index來取字符串中的內容。這一小節我們深入瞭解一下序列類型
序列是指:列表、元組、字符串這3個類型,與字符串一樣,序列的2個主要特點就是索引操作符和切片操作符。
索引操作符讓我們可以從序列中抓取一個特定item;切片操作符讓我們能夠獲取序列的一個切片,即一部分序列。

序列
索引同樣可以是負數,位置是從序列尾部開始計算的。因此,shoplist[-1]表示序列的最後一個元素而shoplist[-2]抓取序列的倒數第二個item;

切片操作符中[begin:end:steps]的第一個數表示切片split開始位置,end表示切片結束位置,如果不指定則分別表示首部、尾部,step=1。
str[:] 返回整個序列的拷貝,用負數做split,負數用在從序列尾部開始計算的位置,例如str[:-1]返回除了最後一個item外包含所有item的序列切片。
注意切片是含首不含尾即[begin, end),只要是序列(列表,元組,字符串)索引取數據都是[index]方括號

序列的基本操作;

len()	求序列長度,注意Python中字符串類型'沒有附帶結束符',這是求的實際元素的長度,如`>>> len("hello_world")=11`,這是與其他語言區別

+	連接兩個序列
*   重複序列元素,重複次數
in  判斷元素是否在序列中,成員屬性
max(), min()  返回最大,最小值
cmp(tuple1,tuple2) 比較2個序列值是否相同

>>> str2="hello_"*5
>>> str2
'hello_hello_hello_hello_hello_'
>>>

元組的特性

1.可以向其中存儲多種不同的數據類型(與list[]一致),如int,字符串,float: >>>zoo=(‘wolf’,‘elephent’,23,3.5)
2.元組對象不可改變,與字符串類似,當元組變量被重新賦值後,id()就變了, 試圖通過index修改tuple會報錯

創建元組


空元組>>>emptystr=(), t2 = tuple()
list >>> list1 = [],  list2 = list(), # 類似的 d1 = dict(), s1 = set()
單元素元組>>> singlestr=(2,)

>>> zoo=('wolf','elephent',23,3.5)
>>> zoo
('wolf', 'elephent', 23, 3.5)
>>> id(zoo)
51346392
>>> zoo=('wolf3','elephent2',23,3.5)
>>> zoo
('wolf3', 'elephent2', 23, 3.5)
>>> id(zoo)
48647768
>>> 
>>> zoo
('wolf3', 'elephent2', 23, 3.5)
>>> zoo[1]='lala'
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    zoo[1]='lala'
TypeError: 'tuple' object does not support item assignment
>>> zoo[1]
'elephent2'
>>> 不支持更改,實際上就在內存中重新開闢了空間存儲新數據,而不是在原內存上修改

常用元組來給一組變量賦值

 >>> a,b,c=(1,2,3)
>>> a
1
>>> b
2
>>> c
3
>>> d,e,f,g=zoo
>>> d
'wolf3'
>>> e
'elephent2'
>>> f
23
>>> 

列表list[]中的item值隨意更改

>>> list3
['Simon', 'David', 12, 23.5]
>>> id(list3)
3530184
>>> list3[0]
'Simon'
>>> list3[0]="Hello"
>>> list3
['Hello', 'David', 12, 23.5]
>>> id(list3)
3530184
>>> 更改後id不變,是在原內存空間修改值,而非新創建

字典dict{}

3類不可變對象—數字、字符串、元組

字典是Python中唯一的映射類型(哈希表hashtable),字典是無序的。
字典對象時可變的,但是字典的鍵key必須使用不可變對象,並且一個字典中可以使用不同類型的鍵值key(混合使用數字,字符串等)
keys()或者values()返回key list列表或values list列表
items() 返回包含鍵值對key-value的元組

keys就相當於其他數據類型中的索引index,同樣獲取value只能憑key。

>>> dict1={'name':'milo','age':25,'gender':'male'}
>>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male'}
>>> type(dict1)
<class 'dict'>
>>> dict1['name']
'milo'
>>> dict1.keys()
dict_keys(['name', 'age', 'gender'])
>>> dict1.values()
dict_values(['milo', 25, 'male'])

case2
>>> name='xixi'
>>> dict2={1:'123',2:234,name:'milo','age':25,'gender':'female'}	#key可以用變量,參考dict2中name
>>> dict2[name]
'milo'
>>> dict2['xixi']
'milo'

訪問dict{}字典中的值

 直接使用key訪問:key不存在會報錯,可以使用(not)in判斷
 循環遍歷:for key in dict2.keys():
 使用迭代器:for key in dict2:
 使用迭代器:for key,value in dict2.items():

字典更新update,向其添加insert new新的key-value可以直接類似訪問字典的方式,而且是無序的,再次表明dict的無序性

>>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male'}
>>> dict1['tel']='13817108096'
>>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '13817108096'}
>>> 
>>> dict1['tel']='110110'
>>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110'}
>>> dict1['circle']='python'
>>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110', 'circle': 'python'}
>>> 

del dict1['key']刪除字典中key對應的鍵值對

case
 >>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110', 'circle': 'python'}
>>> del dict1['circle']
>>> dict1
{'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110'}
>>> dict1.pop('age')
25
>>> dict1
{'name': 'milo', 'gender': 'male', 'tel': '110110'}

dict1.pop(key)刪除並且返回key的value
dict1.clear()刪除字典所有元素
del dict1 刪除整個字典

字典{}
Len(),hash()(用於判斷某個對象是否可以做字典的鍵,非哈希類型報TypeError錯誤)
dict.clear():刪除字典中的所有元紊
dict.fromkeys(seq,val=None):以seq中的元素爲key創建並返回一個dict字典,val爲指定的默認值
dict.get(kev,default=None):返回key的value,如果該鍵不存在返回default指定的值
dict.has_key(key):判斷字典中是否存在key,建議使用innot in代替
dict.items():返回鍵值對元組的列表.
dict.keys():返回字典中鍵的列表.
dict.iter*():iteritems(),iterkeys(),itervalues()返回迭代子而不是列表
dict.update(dict2):將dictZ中的鍵值對添加到字典dict中,如果有重複搜蓋,原字典不存在的條目添加進
dict.values():返回字典中所有值的列表。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章