Python中內置的類型有list和tuple。html
list相似於C/C++的數組,能夠存儲多個數字。例如你可能會須要存儲一個班裏全部人的名字。這時就能夠用到list。list中存儲的數據叫作元素(element)。數組
在Python中,使用[...]表示list:app
>>> names = ['Amy', 'Bob', 'Charles']
names是一個list類型的變量,裏面有'Amy'、'Bob'和'Charles'三個元素。函數
能夠用[]表示一個空list:spa
>>> names = []
注意:code
1. []裏的元素(若是有兩個即以上)須要用逗號(,)分隔。htm
2. list中的元素類型能夠不一樣:對象
>>> L = [123, False, 'spam']
像字符串同樣,使用l[index]獲取l(類型爲list)的索引爲index的元素:blog
>>> names[0] 'Amy' >>> names[1] 'Bob' >>> names[2] 'Charles'
也可使用負索引,具體不細說了,上一章已經講過。教程
要設置list索引爲index的元素,須要先拿到,而後直接賦值便可:
>>> names = ['Amy', 'Bob', 'Charles'] >>> names[0] = 'Tom' >>> names ['Tom', 'Bob', 'Charles']
像字符串同樣,使用len()獲取list長度:
>>> len(names)
3
[]的長度爲0:
>>> len([])
0
>>> names = [] >>> len(names) 0
list是Python的對象,在對象中有一個叫作「方法」的概念,「方法」就是指對象的函數。list對象有append()方法,能夠向list追加元素:
>>> names.append('Donald') >>> names ['Amy', 'Bob', 'Charles', 'Donald']
List對象有pop()方法,能夠刪除指定位置上的元素:
>>> names = ['Amy', 'Bob', 'Charles'] >>> names.pop(1) ['Amy', 'Charles'] >>> names.pop() ['Amy']
pop(index)刪除索引爲index的元素,pop()刪除最後一個元素。注意pop()方法返回刪除相應元素後的list,這就是爲何l.pop()和l.pop(index)會顯示結果。
清空list很簡單,只要設爲[]就行了:
>>> names = [] >>> names []
前面說過,list的每一個元素能夠不同。list甚至能夠包含list:
>>> positions = [ ... [0, 0, 0], ... [0, 1, 0], ... [2, 1, 5] ... ] >>> positions [[0, 0, 0], [0, 1, 0], [2, 1, 5]]
在這個例子中,咱們獲取positions中的元素,元素類型也是list:
>>> positions[0] [0, 0, 0] >>> positions[1] [0, 1, 0] >>> positions[2] [2, 1, 5]
若是還要獲取以上list中的元素呢?假設要獲取positions[0]的第1個元素,通常的list咱們直接使用[0]來獲取第一個元素,對吧?這裏也同樣,直接把[0]加在positions[0]後面便可:
>>> positions[0][0]
0
其它數也是同樣的:
>>> positions[1][1] 1 >>> positions[2][0] 2
Python還支持一種叫作tuple的數據類型。Tuple和list相似,可是不可變(immutable)的。
使用(...)表示tuple:
>>> cubes = (1, 8, 27, 64)
空tuple能夠用()表示:
>>> cubes = ()
可是若是是一個元素的tuple呢?好像是這樣寫的:
>>> cubes = (1)
可是如今檢查cubes會發現:
>>> cubes
1
cubes是個int!這裏的(1)被看做整數1了。
所以,須要在()中加一個逗號(,),表示這是一個tuple:
>>> cubes = (1,) >>> cubes (1,)
Python在顯示一個元素的tuple時,也會加一個逗號。
除不能設置、追加、刪除元素外,tuple的操做和list類似。
雖說tuple是不可變的,可是也有一些奇怪的地方。下面是一個含有list的tuple:
>>> t = (1, 2, [1, 2])
有下列語句:
>>> t[2][0] = 10
>>> t
(1, 2, [10, 2])
很奇怪吧,tuple的元素怎麼被改變了?!
答案是,t被建立時,裏面的元素分別是一、二、[1, 2]。後來咱們把[1, 2]的內容改爲了[10, 2],看起來t的元素變了,但這裏的「不變」指指向不變,雖然t[2]的內容改變了,可是一直是同一個list。
可是像下面這樣就不行了:
>>> t[2] = 10 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
(此文未完,原文連接:http://www.cnblogs.com/collectionne/p/6878075.html)