Python的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號。
>>> aTuple = (‘et’,77,99。9)
>>> aTuple
(‘et’,77,99。9)
<1>訪問元組
<2>修改元組
說明: python中不允許修改元組的資料,包括不能刪除其中的元素。
<3>元組的內建函式count, index
index和count與字串和列表中的用法相同
>>> a = (‘a’, ‘b’, ‘c’, ‘a’, ‘b’)
>>> a。index(‘a’, 1, 3) # 注意是左閉右開區間
Traceback (most recent call last):
File “”, line 1, in
ValueError: tuple。index(x): x not in tuple
>>> a。index(‘a’, 1, 4)
3
>>> a。count(‘b’)
2
>>> a。count(‘d’)
0
字典介紹
想一想:
如果有列表
nameList = [‘xiaoZhang’, ‘xiaoWang’, ‘xiaoLi’];
需要對“xiaoWang”這個名字寫錯了,透過程式碼修改:
nameList[1] = ‘xiaoxiaoWang’
如果列表的順序發生了變化,如下
nameList = [‘xiaoWang’, ‘xiaoZhang’, ‘xiaoLi’];
此時就需要修改下標,才能完成名字的修改
nameList[0] = ‘xiaoxiaoWang’
有沒有方法,既能儲存多個數據,還能在訪問元素的很方便就能夠定位到需要的那個元素呢?
答:字典
另一個場景:學生資訊列表,每個學生資訊包括學號、姓名、年齡等,如何從中找到某個學生的資訊?
>>> studens = [[1001, “王寶強”, 24], [1002, “馬蓉”, 23], [1005, “宋喆”,24], 。。。]
變數info為字典型別:info = {‘name’:‘班長’, ‘id’:100, ‘sex’:‘f’, ‘address’:‘地球亞洲中國北京’}
說明:字典和列表一樣,也能夠儲存多個數據,列表中找某個元素時,是根據下標進行的
字典中找某個元素時,是根據‘名字’(就是冒號:前面的那個值,例如上面程式碼中的‘name’、‘id’、‘sex’)
字典的每個元素由2部分組成,鍵:值。例如 ‘name’:‘班長’ ,‘name’為鍵,‘班長’為值
<3>根據鍵訪問值
info = {‘name’:‘班長’, ‘id’:100, ‘sex’:‘f’, ‘address’:‘地球亞洲中國北京’}
print(info[‘name’])
print(info[‘address’])
結果: 班長 地球亞洲中國北京
若訪問不存在的鍵,則會報錯:
>>> info[‘age’]
Traceback (most recent call last):
File “”, line 1, in
KeyError: ‘age’
在我們不確定字典中是否存在某個鍵而又想獲取其值時,可以使用get方法,還可以設定預設值:
>>> age = info。get(‘age’)
>>> age #‘age’鍵不存在,所以age為None
>>> type(age)
>>> age = info。get(‘age’, 18) # 若info中不存在‘age’這個鍵,就返回預設值18
>>> age
18
字典的常見操作1:<1>修改元素
字典的每個元素中的資料是可以修改的,只要透過key找到,即可修改
<2>新增元素:如果在使用 變數名[‘鍵’] = 資料 時,這個“鍵”在字典中,不存在,那麼就會新增這個元素
<3>刪除元素
對字典進行刪除操作,有以下幾種:
del: del刪除指定的元素 刪除整個字典
clear() clear清空整個字典
字典的常見操作2
<1>len()
測量字典中,鍵值對的個數
<2>keys
返回一個包含字典所有KEY的列表
<3>values
返回一個包含字典所有value的列表
<4>items
返回一個包含所有(鍵,值)元祖的列表
<5>has_key
dict。has_key(key)如果key在字典中,返回True,否則返回False
遍歷
透過for 。。。 in 。。。:的語法結構,我們可以遍歷字串、列表、元組、字典等資料結構。
注意python語法的縮排
字串遍歷
>>> a_str = “hello itcast”
>>> for char in a_str:
。。。 print(char,end=‘ ’)
。。。
h e l l o i t c a s t
列表遍歷
>>> a_list = [1, 2, 3, 4, 5]
>>> for num in a_list:
。。。 print(num,end=‘ ’
。。。
1 2 3 4 5
元組遍歷
>>> a_turple = (1, 2, 3, 4, 5)
>>> for num in a_turple:
。。。 print(num,end=“ ”)
1 2 3 4 5
字典遍歷
<1> 遍歷字典的key(鍵)
<2> 遍歷字典的value(值)
<3> 遍歷字典的項(元素)
<4> 遍歷字典的key-value(鍵值對)
公共方法
運算子
運算子 Python 表示式 結果 描述 支援的資料型別
+ [1, 2] + [3, 4] [1, 2, 3, 4] 合併 字串、列表、元組
* ‘Hi!’ * 4 [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] 複製 字串、列表、元組
in 3 in (1, 2, 3) True 元素是否存在 字串、列表、元組、字典
not in 4 not in (1, 2, 3) True 元素是否不存在 字串、列表、元組、字典
+
>>> “hello ” + “itcast”
‘hello itcast’
>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> (‘a’, ‘b’) + (‘c’, ‘d’)
(‘a’, ‘b’, ‘c’, ‘d’)
*
>>> ‘ab’*4
‘ababab’
>>> [1, 2]*4
[1, 2, 1, 2, 1, 2, 1, 2]
>>> (‘a’, ‘b’)*4
(‘a’, ‘b’, ‘a’, ‘b’, ‘a’, ‘b’, ‘a’, ‘b’)
in
>>> ‘itc’ in ‘hello itcast’
True
>>> 3 in [1, 2]
False
>>> 4 in (1, 2, 3, 4)
True
>>> “name” in {“name”:“Delron”, “age”:24}
True
注意,in在對字典操作時,判斷的是字典的鍵
python內建函式
Python包含了以下內建函式
序號 方法 描述
1 cmp(item1, item2) 比較兩個值
2 len(item) 計算容器中元素個數
3 max(item) 返回容器中元素最大值
4 min(item) 返回容器中元素最小值
5 del(item) 刪除變數
cmp
>>> cmp(“hello”, “itcast”)
-1
>>> cmp(“itcast”, “hello”)
1
>>> cmp(“itcast”, “itcast”)
0
>>> cmp([1, 2], [3, 4])
-1
>>> cmp([1, 2], [1, 1])
1
>>> cmp([1, 2], [1, 2, 3])
-1
>>> cmp({“a”:1}, {“b”:1})
-1
>>> cmp({“a”:2}, {“a”:1})
1
>>> cmp({“a”:2}, {“a”:2, “b”:1})
-1
注意:cmp在比較字典資料時,先比較鍵,在比較值。
len
>>> len(“hello itcast”)
12
>>> len([1, 2, 3, 4])
4
>>> len((3,4))
2
>>> len({“a”:1, “b”:2})
2
注意:len在操作字典資料時,返回的是鍵值對個數。
max
>>> max(“hello itcast”)
‘t’
>>> max([1,4,522,3,4])
522
>>> max({“a”:1, “b”:2})
‘b’
>>> max({“a”:10, “b”:2})
‘b’
>>> max({“c”:10, “b”:2})
‘c’
del
del有兩種用法,一種是del加空格,另一種是del()
>>> a = 1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘a’ is not defined
>>> a = [‘a’, ‘b’]
>>> del a[0]
>>> a
[‘b’]
>>> del(a)
>>> a
Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘a’ is not defined
多維列表/元祖訪問的示例
>>> tuple1 = [(2,3),(4,5)]
>>> tuple1[0]
(2, 3)
>>> tuple1[0][0]
2
>>> tuple1[0][2]
Traceback (most recent call last):
File “”, line 1, in
IndexError: tuple index out of range
>>> tuple1[0][1]
3
>>> tuple1[2][2]
Traceback (most recent call last):
File “”, line 1, in
IndexError: list index out of range
>>> tuple2 = tuple1+[(3)]
>>> tuple2
[(2, 3), (4, 5), 3]
>>> tuple2[2]
3
>>> tuple2[2][0]
Traceback (most recent call last):
File “”, line 1, in
TypeError: ‘int’ object is not subscriptable
引用
想一想
>>> a = 1
>>> b = a
>>> b
1
>>> a = 2
>>> a
2
請問此時b的值為多少?
>>> a = [1, 2]
>>> b = a
>>> b
[1, 2]
>>> a。append(3)
>>> a
[1, 2, 3]
請問此時b的值又是多少?
引用
在python中,值是靠引用來傳遞來的。
我們可以用id()來判斷兩個變數是否為同一個值的引用。 我們可以將id值理解為那塊記憶體的地址標示。
>>> a = 1
>>> b = a
>>> id(a)
13033816
>>> id(b) # 注意兩個變數的id值相同
13033816
>>> a = 2
>>> id(a) # 注意a的id值已經變了
13033792
>>> id(b) # b的id值依舊
13033816
>>> a = [1, 2]
>>> b = a
>>> id(a)
139935018544808
>>> id(b)
139935018544808
>>> a。append(3)
>>> a
[1, 2, 3]
>>> id(a)
139935018544808
>>> id(b) # 注意a與b始終指向同一個地址
139935018544808
可變型別與不可變型別
可變型別,值可以改變:列表 list 、字典 dict、不可變型別
值不可以改變:數值型別 int, long, bool, float、字串 str、元組 tupl