這算是我自己的學習筆記吧, 菜鳥一隻. 歡迎討論~
python 內置數據類型有 dictionary(字典), list(列表) tuple(組元)
(1) Dictionary
定義了鍵與值的一對一關係
d = {"key1":"value1","key2":"value2"} #字典類型定義
d["key3"] = "value3" #添加新的鍵值對
del d["key3"] #刪除元素
d.clear() #清空dictionary
d["key2"] = "changedValue" #將原有鍵對應的值修改
d["key1"] #可通過鍵獲取對應值
note 1.1. dictionary只能由鍵查值, 若所查鍵值不存在. 則會引發異常, 報出KeyError錯誤
note 1.2. dictionary是無序的
note 1.3. dictionary的key是大小寫敏感的, d["key"] 和 d["Key"]是兩個元素
note 1.4. dictionary的值可以是任意數據類型,包括字符串,數值,對象甚至其他dictionary,
同時單個dictionary中值的類型也不是必須要相同, 可以根據需要混用
note 1.5. dictionary的鍵類型要求嚴格的多, 但可以是字符串,數值或其他幾種類型(還沒看到).
同note 4, 單個dictionary中鍵的類型也不是必須要相同.
(2) List
類似java裏的ArrayList, 可以保存任意對象, 並且增加元素時動態擴展
li = ["object1","object2","object3"] #list類型定義
note 2.1 與dictionary不同, list 是有序的, 它會保持初始的順序
li.append("new") #在末尾添加新元素, append的參數可以是任意類型
li.insert(2,"new") #在第2個元素後插入新元素
li.extend(["object3","object4"]) #連接list, extend的參數是一個list
note 2.2. append(添加)和extend(擴展)的區別
使用一個很明顯的例子:
>>>li = ["a","b","c"]
>>>li.append(["d","e","f"])
>>>li
["a","b","c",["d","e","f"]]
>>>li = ["a","b","c"]
>>>li.extend(["d","e","f"])
>>>li
["a","b","c","d","e","f"]
append是在list的末尾添加一個元素, 哪怕這個元素本身也是個list, 也只會被當成一個元素
extend是將一個list每個元素一次添加到原list中
li.remove("object1") #刪除首次出現的object1元素, 注意,
#若list中沒有object1元素, 則會引發異常
li.pop() #刪除最後一個元素,並返回最後一個元素的值
li[0] #list視爲從0開始的數組
li[-1] #負數認爲是從尾部往前計數來存取元素, li[-i] == li[length(li)-i]
#分片(slice)
li[2:3] #分片(slice) 通過兩個引索得到li的一個子集
li[-3:2] #引索爲負數是可行的, 具體內容看note 2.3.
li[:2] #第一個引索默認爲0
li[2:] #第二個引索默認爲length(li)
li[:] #這是原list的一個拷貝
note 2.3. 分片返回一個新list, 它包含了從第一個引索開始,直到但是不包括第二個引索的所有元素
簡單的理解是, 從左往右閱讀list, 第一個引索指定了第一個想要的元素,
第二個引索指定了第一個不想要的元素,
返回值期間所有元素
ps. li[3:2] 返回[]
li.index("object1") #查找一個值首次出現的引索值
#如果是不存在的值, 則會報錯
"object1" in li #判斷對象是否在list中, 值存在,返回True,否則False
note 2.4. note. python語言中的bool類型True, False 要注意首字母大寫
note 2.5. 0爲False, 其他數值均爲True
空串("")爲False,其他字符串均爲True
空list([])爲Flase,其他list均爲True
空tuple(())爲False,其他tuple均爲True
空dictionary({})爲False,其他dictionary均爲True
list運算符
li = li + ["b","c"] #作用等同li.extend(["b","c"]) 但extend效率較高
li += ["b","c"]
li = li*3 # *可作爲重複器作用於list, 本句代碼等同於 li = li+li+li
(3)Tuple
tuple是不可變的list, 一旦創建了一個tuple, 就不能以任何方式改變它
t = ("object1","object2","object3") #定義tuple
t[0] #元素獲取方式與list相同
t[-1]
t[2:3] #也可使用分片(slice)
"object" in t #使用in判斷元素是否在tuple中
note 3.1 tuple同list一樣,是有順序的. tuple的引索也是從0開始
note 3.2 tuple沒有方法, 但是可以用in判斷一個元素是否存在於tuple中
note 3.3 tuple可以作爲dictionary的鍵
note 3.4 tuple操作速度比list快, 如果一個常量集唯一要做的就是不斷地遍歷它, 就是使用tuple吧
note 3.5 tuple可以轉換成list, 反之亦然.
tel = "tel"
number = "110"
"%s = %s" %(tel,number) #用tuple格式化字符串
v = "age"
age = 18
"%s = %d" %(v,age) #用法類似c語言中的printf
"User Name is %s" %("ABC",) #只包含一個元素的tuple必須在結尾加上一個逗號,
#否則Python不會知道("ABC")究竟是"ABC"還是一個tuple
note 3.6. 當定義一個dictionary,list或tuple時, 最後一個元素後跟上逗號是沒有問題的