今天開始學python(內置數據類型)

這算是我自己的學習筆記吧, 菜鳥一隻. 歡迎討論~


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時, 最後一個元素後跟上逗號是沒有問題的





發佈了19 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章