1 Python Number(數字)
Python Number 數字類型用於存儲數值。
數字類型是不允許改變的,這就意味着如果改變 Number 數據類型的值,將重新分配內存空間。
以下實例在變量賦值時 Number 對象將被創建:
#以下實例在變量賦值時 Number 對象將被創建: var1 = 1 var2 = 10 #使用del語句刪除一些 Number 對象引用 del var del var_a, var_b
>>> id(8) 8675840L >>> x = 8 >>> y = 8 >>> x is y True >>> id(y) 8675840L
>>> id(555) 53060472L >>> x1 = 555 >>> id(x1) 53058888L >>> y1 = 555 >>> id(y) 8675840L
2 Python 字符串
字符串是 Python 中最常用的數據類型。我們可以使用引號('或")來創建字符串。
創建字符串很簡單,只要為變量分配一個值即可。例如:
#創建字符串 var1 = 'Hello World!' var2 = "Python Runoob"
Python訪問字符串中的值
Python不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。
Python訪問子字符串,可以使用方括號來截取字符串,如下實例:
#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Runoob" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
Python字符串更新(實際上是生成一個新的字符串對象,字符串是不可變對象)
你可以對已存在的字符串進行修改,將生成一個新的字符串,如下實例:
>>> str1 = "hello" >>> id(str1) 55521928L >>> str1 = str1 + 'world' >>> str1 'helloworld' >>> id(str1) 55700432L
3 Python 列表(List)
序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引(指向實際的對象),第一個索引是0,第二個索引是1,依此類推。
Python有6個序列的內置類型,但最常見的是列表和元組。
序列都可以進行的操作包括:索引,切片,加,乘,檢查成員。
此外,Python已經內置確定序列的長度以及確定最大和最小的元素的方法。
列表是最常用的Python數據類型,它可以作為一個方括號內的逗號分隔值出現。
列表的數據項不需要具有相同的類型,Python List底層存儲結構並不是循環雙向鏈表,而是類似於vector;
創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。如下所示:
list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"]
與字符串的索引一樣,列表索引從0開始。列表可以進行截取、組合等。
訪問列表中的值
使用下標索引來訪問列表中的值,同樣你也可以使用方括號的形式截取字符,如下所示:
#!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print "list1[0]: ", list1[0] print "list2[1:5]: ", list2[1:5] #x[startAt:endBefore:filterstep] >>> x = range(10) >>> x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> x[::2] [0, 2, 4, 6, 8] >>> x[::3] [0, 3, 6, 9] #filter step: 2, range [2:7) >>> x[2:7:2] [2, 4, 6] >>> id(x) 55248712L >>> id(x[0:2]) 55292936L >>> x[0:2] [0, 1]
更新列表(Python List 為可變對象,in-place change)
你可以對列表的數據項進行修改或更新,你也可以使用append()方法來添加列表項,如下所示:
>>> list1 = [] >>> id(list1) 55301384L >>> list1.append("hello") >>> list1 ['hello'] >>> id(list1) 55301384L
刪除列表元素
可以使用 del 語句來刪除列表的元素,如下實例:
list1 = ['physics', 'chemistry', 1997, 2000] print list1 del list1[2]
4 Python tuple (元組)
Python的元組與列表類似,不同之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組創建很簡單,只需要在括號中添加元素,並使用逗號隔開即可。
如下實例:
#元組元素用括號包含,類型可不一樣 tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); #元組元素用逗號分隔即可 tup3 = "a", "b", "c", "d"; #創建空元組 tup1 = (); #創建只有一個元素的元組,需要在元素后面添加逗號,否則變成一個整數 >>> tup1 = (2,) >>> tup1 (2,) >>> type(tup1) <type 'tuple'> >>> (1) 1 >>> type((1)) <type 'int'>
訪問元組(序列元素的訪問方式:索引,切片等)
元組可以使用下標索引來訪問元組中的值,如下實例:
#!/usr/bin/python tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5, 6, 7 ); print "tup1[0]: ", tup1[0] print "tup2[1:5]: ", tup2[1:5]
修改元組
元組中的元素值是不允許修改的,但我們可以對元組進行連接組合(實際生成新的對象),如下實例:
#!/usr/bin/python # -*- coding: UTF-8 -*- tup1 = (12, 34.56); tup2 = ('abc', 'xyz'); # 以下修改元組元素操作是非法的。 # tup1[0] = 100; # 創建一個新的元組 tup3 = tup1 + tup2; print tup3;
刪除元組
元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組,如下實例:
#!/usr/bin/python tup = ('physics', 'chemistry', 1997, 2000); del tup;
5 Python 字典(Dictionary)
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
一個簡單的字典實例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
訪問字典里的值
把相應的鍵放入熟悉的方括弧,如下實例:
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; print "dict['Name']: ", dict['Name']; print "dict['Age']: ", dict['Age'];
修改字典
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; dict['Age'] = 8; # update existing entry dict['School'] = "DPS School"; # Add new entry
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下實例:
#!/usr/bin/python # -*- coding: UTF-8 -*- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; del dict['Name']; # 刪除鍵是'Name'的條目 dict.clear(); # 清空詞典所有條目 del dict ; # 刪除詞典
字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是標准的對象,也可以是用戶定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,后一個值會被記住,
2)鍵必須不可變,所以可以用數字,字符串或元組充當,所以用列表就不行,
3)字典內部采用HashTable(散列表)的實現方式
6 set(可變集合)
set和dict類似,也是一組key的集合,但不存儲value。由於key不能重復,所以,在set中,沒有重復的key。
要創建一個set,需要提供一個序列對象(eg. list, string)作為輸入集合:
>>> s = set("123") >>> s set(['1', '3', '2']) >>> s = set([1,2,3]) >>> s set([1, 2, 3])
重復元素在set中自動被過濾:
>>> s = set("122224") >>> s set(['1', '2', '4'])
通過add(key)方法可以添加元素到set中,可以重復添加,但不會有效果:
>>> s set(['1', '2', '4']) >>> s.add("2") >>> s set(['1', '2', '4']) >>> s.add("25") >>> s set(['1', '25', '2', '4'])
通過remove(key)方法可以刪除元素:
>>> s set(['1', '25', '2', '4']) >>> s.remove("2") >>> s set(['1', '25', '4'])
tips:
(1) set可以看成數學意義上的無序和無重復元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作.
(2) set和dict的唯一區別僅在於沒有存儲對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重復元素”。試試把list放入set,看看是否會報錯。
>>> s.add([1,2]) Traceback (most recent call last): File "<pyshell#85>", line 1, in <module> s.add([1,2]) TypeError: unhashable type: 'list'
7 frozenset (不可變集合)
frozenset是不可變的集合, 簡單說就是不能修改的set集合, 它和set集合類似,區別在於一個可變, 另一個不可變,其它的功能一樣。 很像list和tuple的區別。
# 創建一個空的frozenset集合 >>> frozen_set = frozenset() >>> frozen_set frozenset([]) # 從一個list創建一個frozenset集合 >>> frozen_set2 = frozenset(['a','b','c','d','e']) >>> frozen_set2 frozenset(['a', 'c', 'b', 'e', 'd'])
#無法添加元素,沒有add等添加方法
參考:
