資料結構是一種結構,它們用以把一些資料儲存在一起。在python中有三種內建的資料結構:列表(list)、元組(tuple)、字典(dictionary)。
列表由一對方括號括起來,其中的專案之間以逗號分隔。你可以在列表中增加、刪除、查尋專案。
示例如下:
$ python using_list.py
這兒有 4 種水果.
它們是: 蘋果 桔子 芒果 香蕉
再加一種水果西瓜.
列出現在的水果 蘋果 桔子 芒果 香蕉 西瓜 none
給它們排個序
列出排序後的水果 桔子 芒果 蘋果 西瓜 香蕉 none
排在列表中第一的水果是 桔子
買掉這第乙個水果 桔子
列出現在的水果 芒果 蘋果 西瓜 香蕉 none
說明:1、shoplist = ['蘋果', '桔子', '芒果', '香蕉']定義了乙個由商品名稱構成的乙個名為shoplist的列表。列表中的元素可以是任何物件。在python中一切都是物件。
2、print語句中的逗號的作用是禁止自動換行。
4、shoplist.sort()為列表中的專案排序。
5、shoplist[0]引用列表中的第乙個元素。列表中元素的索引值從左到右由0開始。
6、del shoplist[0]刪除列表中的第乙個元素。del是列表的刪除方法。
元組由一對圓括號括起來,其中的專案之間以逗號分隔,元組中的元素可以是任何物件。元組是不可變的,你不要試圖改變其中的元素。
示例如下:
例1:
#!/usr/bin/python執行輸出如下:# filename: using_tuple.py
zoo = ('wolf', 'elephant', 'penguin')#建立乙個名為zoo的元組
print 'zoo 中的元素的數量是:', len(zoo)
#len是元組的方法,用以得到其中的元素個數
new_zoo = ('monkey', 'dolphin', zoo)
print ' new_zoo 中的元素的數量是:', len(new_zoo)
print 'new_zoo 中的動物有', new_zoo
print '來自zoo中的動物有', new_zoo[2]#引用第三個元素zoo,也是乙個元組
print 'zoo中最後乙個動物是', new_zoo[2][2]#引用元組zoo的第三個元素
$ python using_tuple.py
zoo 中的元素的數量是: 3
new_zoo 中的元素的數量是:3
new_zoo 中的動物有 ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
來自zoo中的動物有('wolf', 'elephant', 'penguin')
zoo中最後乙個動物是 penguin
例2:
#!/usr/bin/python執行輸出如下:# filename: print_tuple.py
age = 22
name = 'pythontik'
print '%s is %d years old' % (name, age)
#格式化列印,我們經常這樣使用元組
#name對應%s(字串),age對應%d(整數);必須一一對應
print 'why is %s playing with that python?' % name
$ python print_tuple.py
pythontik is 22 years old
why is pythontik playing with that python?
字典是由花括號括起來的鍵值對。鍵值對是由 名字:值 構成,鍵值對之間由逗號分隔;名字是不可變且唯一的,名字和值是一對一的關係,我們可以通過名字來訪問它的值。
示例如下:
#!/usr/bin/python執行輸出如下:# filename: using_dict.py
#下面建造乙個字典pythontik
pythontik =
print "zhao's address is %s" % pythontik['zhao'] #在字典pythontik中新增乙個鍵值對'zhou':'[email protected]' pythontik['zhou'] = '[email protected]' #用del方法刪除乙個鍵值對'shun':'[email protected]' del pythontik['shun'] print '/nthere are %d contacts in the address-book/n' % len(pythontik) for name, address in pythontik.items(): print 'contact %s at %s' % (name, address) if 'zhou' in pythontik: # 或 pythontik.has_key('zhou') print "/nzhou's address is %s" % pythontik['zhou']
$ python using_dict.py
zhao's address is [email protected]
there are 4 contacts in the address-book
contact zhao at [email protected]
contact qian at [email protected]
contact zhou at [email protected]
contact li at [email protected]
zhou 's address is [email protected]
列表、元組和字串都是序列,序列有兩個主要的特點:索引操作和切片操作。我們可以通過索引操作直接訪問序列中的某一值;通過切片操作來檢索序列中的某一部份。
示例如下:當我們建立了乙個物件並把它賦給(=)乙個變數後,這個變數就指向了這個物件,也就是說它指向了儲存這個物件的記憶體區域。但如果我們用切片的方法來複製給變數的話,那它們之間是不會互相影響的,各有各的記憶體區域。
示例如下:
$ python reference.py
****** assignment
shoplist is ['mango', 'carrot', 'banana']
mylist is ['mango', 'carrot', 'banana']
copy by ****** a full slice
shoplist is ['mango', 'carrot', 'banana']
mylist is ['carrot', 'banana']
本系列的文章**是http://www.pythontik.com/html,如果有問題可以與那裡的站長直接交流。
python 資料結構
刪除元素 remove,pop,del set是乙個無序的,不重複的元素集合 set中每個元素都是可雜湊的,但是set不是可雜湊的。相對應的frozenset,可hash,可以作為keys存在於dict中 支援 x in set,len set for x in set,不支援slice等序列操作 ...
python 資料結構
變數是只不過保留的記憶體位置用來儲存值。這意味著,當建立乙個變數,那麼它在記憶體中保留一些空間a abc 1.在記憶體中建立了乙個 abc 的字串 2.在記憶體中建立了乙個名為a的變數,並把它指向 abc a abc b a a xyz a abc 直譯器建立了字串 abc 和變數a,並把a指向 a...
Python資料結構
a列表 a 安徽 浙江 福建 相同資料型別,並且通過0,1,2,3索引可以引用值.函式 print len insert 插入 extend 複製 合併 del a 刪除 reverse 遍歷 a a b c for i in range len a print a i for index valu...