Python中的List,Tuple和Dictionary

來源:互聯網
上載者:User
文章目錄
  • List
  • Tuples
  • Dictionary
List參考:http://www.greenteapress.com/thinkpython/thinkCSpy/html/chap08.htmlList是一組有序的元素,和String有些類似,只是String中只能是字元,而List中則可以包含任何類型的元素,如下面的例子所示:
[10, 20, 30, 40] ["spam", "bungee", "swallow"] ["hello", 2.0, 5, [10, 20]] 
讀取元素:List的index可以是任意的整型運算式,若為負數,則總後向前數,如下面的這些例子:
>>> numbers[3-2] 5 >>> numbers[-1] 5 
List的長度:使用len()函數,可以方便地獲得list的長度:
horsemen = ["war", "famine", "pestilence", "death"] i = 0 while i < len(horsemen):   print horsemen[i]   i = i + 1 

List中不同類型的元素都被計數為1,例如下面的這個list,長度為4

['spam!', 1, ['Brie', 'Roquefort', 'Pol le Veq'], [1, 2, 3]] 

List元素的判別:使用in關鍵字可以方便的判斷一個元素是否在List中,如:

>>> horsemen = ['war', 'famine', 'pestilence', 'death'] >>> 'pestilence' in horsemen True >>> 'debauchery' in horsemen False >>> 'debauchery' not in horsemen True
List的操作符:使用“+”操作符可以串連兩個List:
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> c = a + b >>> print c [1, 2, 3, 4, 5, 6] 

使用"*"可以快速複製List中的元素

>>> [0] * 4 [0, 0, 0, 0] >>> [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3] 
List切片:可以使用指定上下限的方式來獲得一個List的Slice:
>>> list = ['a', 'b', 'c', 'd', 'e', 'f'] >>> list[1:3] ['b', 'c'] >>> list[:4] ['a', 'b', 'c', 'd'] >>> list[3:] ['d', 'e', 'f'] 
List是可變的

與Python中的數組不同,List中元素的值是可以修改的:

>>> fruit = ["banana", "apple", "quince"] >>> fruit[0] = "pear" >>> fruit[-1] = "orange" >>> print fruit ['pear', 'apple', 'orange'] 

使用Splice的方式可以批量增加、刪除或修改List中的元素:

修改
>>> list = ['a', 'b', 'c', 'd', 'e', 'f'] >>> list[1:3] = ['x', 'y'] >>> print list ['a', 'x', 'y', 'd', 'e', 'f'] 

刪除

>>> list = ['a', 'b', 'c', 'd', 'e', 'f'] >>> list[1:3] = [] >>> print list ['a', 'd', 'e', 'f'] 

增加

>>> list = ['a', 'd', 'f'] >>> list[1:1] = ['b', 'c'] >>> print list ['a', 'b', 'c', 'd', 'f'] >>> list[4:4] = ['e'] >>> print list ['a', 'b', 'c', 'd', 'e', 'f'] 

還可以使用del函數刪除List中的元素:

>>> a = ['one', 'two', 'three'] >>> del a[1] >>> a ['one', 'three'] 

del刪除多個元素:

>>> list = ['a', 'b', 'c', 'd', 'e', 'f'] >>> del list[1:5] >>> print list ['a', 'f'] 
Objects和Values

Python中每個對象都有自己的id,可以使用id()函數來查看。

例如下面這段代碼:
a = "banana" b = "banana"print id(a)print id(b)

輸出類似:

162053664162053664

這說明對於String常量,他們的name都會binding到同一個對象上。同樣是immutable的數組,會不會也是這樣?我們可以用下面這段代碼來測試:

a = (1, 2, 3)b = (1, 2, 3)print id(a)print id(b)

我的本地輸出:

162055028162055108

對於List:

a = [1, 2, 3]b = [1, 2, 3]print id(a)print id(b)

我的本地輸出:

160416428162000588

從上面的輸出可以看出,immutable的數組和mutable的列表都不會binding到同一個對象上,而且同時聲明的數組id距離不大,而類表id卻相差較大,這也許與他們在記憶體中的位置有關。
Strings和ListsString中最常用的兩個方法都與List相關。split方法將String分解為字串List。split()方法的參數有兩個,一個是要被分解的String,另一個是分割符。如下面代碼所示:

>>> import string >>> song = "The rain in Spain..." >>> string.split(song) ['The', 'rain', 'in', 'Spain...'] 

在上面的代碼中,split方法只傳入了要被分解的String一個參數,此時Split將使用預設分割符:空格

下面是傳入分割符的範例程式碼:
>>> string.split(song, 'ai') ['The r', 'n in Sp', 'n...'] 

和split對應的一個方法為join(),用起來也與split類似,下面是join的例子:

>>> list = ['The', 'rain', 'in', 'Spain...'] >>> string.join(list) 'The rain in Spain...' 

傳入分割符的例子:

>>> string.join(list, '_') 'The_rain_in_Spain...'
TuplesMutability and Tuples和String相同的是,Python中的數組也是immutable的。這與Java、C++等很不一樣。Tuple可以這樣建立:
tuple = 'a', 'b', 'c', 'd', 'e' 

也可以這樣建立:

tuple = ('a', 'b', 'c', 'd', 'e') 

若要建立只含一個元素的Tuple,需要添加一個“逗號在”後面,如下所示:

t1 = ('a',) type(t1) <type 'tuple'>

否則,則t1將binding到一個String上,如下所示:

t2 = ('a') type(t2) <type 'str'> 

與List類似,可以使用指定上下區間的方式來提取一個新的Tuple,也可以使用“+”來產生一個新的Tuple,如下所示:

>>> tuple = ('a', 'b', 'c', 'd', 'e') >>> tuple[1:3] ('b', 'c') >>> tuple = ('A',) + tuple[1:] >>> tuple ('A', 'b', 'c', 'd', 'e') 
隨機數使用Python中的random庫中的random函數可以獲得一個0到1之間的float隨機數,下面的代碼將產生10個隨機數:
import randomfor i in range(10):    x = random.random()    print type(x)
Dictionary

Python中的Dictionary可以使用任意immutable的類型做index。建立Dictionary的一種常用方式是首先建立一個空的Dictionary,然後逐漸向其中添加元素:

>>> eng2sp = {} >>> eng2sp['one'] = 'uno' >>> eng2sp['two'] = 'dos' 

列印效果如下:

>>> print eng2sp {'one': 'uno', 'two': 'dos'} 

還可以用這種方式建立一個空的Dictionary:

>>> eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'} 
Dictionary方法

獲得Dictionary中的keys:

>>> eng2sp.keys() ['one', 'three', 'two'] 

獲得Dictionary中的values:

>>> eng2sp.values() ['uno', 'tres', 'dos']

判斷Dictionary中是否包含某個key:

>>> eng2sp.has_key('one') True >>> eng2sp.has_key('deux') False 

獲得Dictionary的copy:

>>> opposites = {'up': 'down', 'right': 'wrong', 'true': 'false'} >>> copy = opposites.copy() 
長整型 longPython中的"long"可以表示任意長度的整數,獲得long類型有兩種方法,一種是在數字後面加“L”,另一種是使用long()函數,如下所示:
>>> type(1L) <type 'long'>>>> long(1) 1L >>> long(3.9) 3L >>> long('57') 57L 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.