### ch2-1 sales1 = 12.3 sales2 = 13.2 sales3 = 19.8 sales4 = 21.1 sales5 = 16.5 sales6 = 15.4 sales7 = 14.9 sum = sales1 + sales2 + sales3 + sales4 + sales5 + sales6 + sales7 print(sum) sales = [12.3, 13.2, 19.8, 21.1, 16.5, 15.4, 14.9] print(sum(sales)) ### ch2-2 >>> fruit = ["蘋果", "香蕉", "芭樂"] >>> fruit[0], fruit[2] >>> fruit[3] ### ch2-3 >>> s = list("Python 你好!") >>> s ### ch2-4 >>> a = [0, 1, 2] >>> a[2] >>> a[2] = "abc" >>> a[2] >>> a[-1] >>> a[-4] ### ch2-5 >>> fruit = [["蘋果", 82], ["香蕉", 45], ["芭樂", 59]] >>> fruit[0][1] ### ch2-6 >>> a = [[1, 2], [3, 4], [5, [6, 7]]] >>> a[1][0], a[2][1][0] >>> a[2][1][1] ### ch2-7 >>> a = [0, 1, 2, 3, 4, "last] >>> a[1:3] >>> a[4:4] >>> a[-5:3] >>> a[-5:-3] >>> a[-2:] ### ch2-8 >>> a = [0, 1, 2, 3, 4, 5, 6] >>> a[1:6:2] >>> a[4:1:-1] >>> a[::-1] ### ch2-9 >>> a = [0, 1, 2, 3] >>> a[1:3] = [5, "AB"] >>> a[2:] = [] >>> a[1] = [9] ### ch2-10 >>> a = [0, 1, 2, 3] >>> a[1:] = "abc" >>> a[1:4:2] = "ab" >>> a[1:4:2] = "abc" ### ch2-11 >>> a = [0, 1, 2, 3, 4, 5] >>> del a[1] >>> a = [0, 1, 2, 3, 4, 5] >>> del a[2:5] >>> a = [0, 1, 2, 3, 4, 5] >>> del a[1:6:2] >>> del a ### ch2-12 >>> [1, 2] < [1, 2, 3] >>> ['a', 'b'] < ['c'] ### ch2-13 >>> grade = ('甲', '乙', '丙', '丁'); order = [0, 1, 2, 3] >>> grade[0] >>> order2 = tuple(order) >>> order2 >>> order ### ch2-14 >>> a = (1) >>> type(a) >>> a = (1, ) >>> type(a) ### ch2-15 >>> a = 0, 1, 2 >>> a >>> b = 1, >>> type(b) ### ch2-16 >>> t = ([0, 1], 2) >>> t[0][0] = 9 >>> t ### ch2-17 >>> {[1, 2], 3, 4} ### ch2-18 >>> 1 in {1, 2} >>> 0 in {1, 2} ### ch2-19 >>> {'A': 1, 'B': 2, 'A': 3} ### ch2-20 >>> a = {(1, 2):[3, 4]} # 鍵為 tuple,值為 list 是 OK 的 >>> b = {[1, 2]:3]} # 鍵用 list 會錯誤 >>> c = {{1, 2}:3} # 鍵用 set 會錯誤 ### ch2-21 >>> dict(['A', 1), ['B', 2]]) # 串列轉字典 >>> dict({'ab', 'cd'}) # 集合轉字典 >>> dict(['A', 1), ['B', 2]]) # 字典轉串列 >>> dict({'ab', 'cd'}) # 字典轉串列 ### ch2-22 >>> d = {"紅茶": 25, "柳橙汁": 45} # 建立字典物件 >>> d["紅茶"] # 以鍵取值 ### ch2-23 >>> d = {"紅茶": 25, "果汁": 45} # 建立字典物件 >>> d["紅茶"] = 30 # 將紅茶改為 30 元 >>> d["拿鐵"] = 50 # 新增一個元素 >>> d # 檢查目前的變數 d >>> del d["果汁"] # 將鍵為 "果汁" 的元素刪除 >>> d # 檢查目前的變數 d ### ch2-24 >>> 1 in {1:3, 2:4} # 1 在 字典 (的鍵中)? 結果為 True >>> 3 not in {1:3, 2:4} # 3 不在 字典 (的鍵中)? 結果為 True >>> {1:3, 2:4} == {2:4, 1:3} # 兩個字典是否相同? 結果為 True ### ch2-25 >>> extno = {('王', "小明"): 201, ('陳', "美美"): 202} # 建立字典物件 >>> extno['陳', "美美"] # 查詢陳美美的分機 >>> extno = ['張', "天才"] = 203 # 新增一個員工,中括號裡的姓和名會自動打包為 tuple >>> extno # 檢查目前的變數 extno ### ch2-26:字串索引 >>> s = "0123456" # 建立字串物件 >>> s[1] # 取索引 1 的字元 (索引從 0 開始) >>> s[1] = 4 # 字串不可更改內容 >>> s[:2] # 索引 0 到 1 的內容 >>> s[3:] # 索引由 3 到結尾 >>> s[2:1] # 索引 2 在 1 的後面,因此結果為空字串 >>> s[1:6:2] # 由索引 1 到 5,每隔 2 個取 1 個 ### ch2-27:字串的算符 >>> "ab" in "abc" # "ab" 包含於 "abc",結果為 True >>> "ab" in "ab" # 相等也算包含,結果為 True >>> "ab" < "ac" # 因 'b' < 'c',結果為 True ### ch2-28:容器常用的函式 >>> len("string") # 回傳字串的長度 (字元數) >>> len(["string", "statement"]) # 回傳串列的長度 (元素數) >>> len({1:"abc", 2:"def", 3:"123}) # 回傳字典的長度 (元素數) >>> a = [0, 3, 1, 2] # 建立串列物件 >>> max(a), min(a), sum(a) / len(a) # 求串列的最大、最小、總和與長度的運算式 >>> d = {1:4, 2:5, 3:6} # 建立字典物件 >>> max(d), min(a), sum(d) # max()、min()、sum() 只取 d 的鍵來計算 ### ch2-29:字元編碼的轉換 >>> chr(65) # 將 Unicode 轉為字元,結果為 'A' >>> ord('人') # 將字元轉為 Unicode,結果為 20154 >>> len("Abc人") # 傳回字串的長度 (字元數),結果為 4 >>> min("Abc人") # 傳回 Unicode 最小的字元,結果為 'A' >>> max("Abc人") # 傳回 Unicode 最大的字元,結果為 '人' ### ch2-30:sorted() 及 reversed() 函式 >>> sorted([3, 1, 2]) # 傳回 list 容器排序後的 list,結果為 [1, 2, 3] >>> sorted({3, 1, 2}) # 傳回 set 容器排序後的 list,結果為 [1, 2, 3] >>> sorted({3:7, 1:8, 2:9}) # 傳回 dict 容器排序後的 list,結果為 [1, 2, 3] >>> sorted("bac", reverse = True) # 傳回 str 反向排序後的 list,結果為 ['c', 'b', 'a'] >>> list(reversed([1, 2, 3, 0])) # 把 list 中的元素反轉,結果為 [0, 3, 2, 1] >>> tuple(reversed("bdac")) # 把字串中的字元反轉,結果為 ('c', 'a', 'd', 'b') 的 tuple ### ch2-31:list 的 method >>> mylist = ['v', 'a', 'k', "abc"] # 建立串列物件 >>> newlist = sorted(mylist) # sorted() 會取用 mylist 的元素排序,然後把排序好的 list 傳回給 newlist >>> newlist # 檢查目前的變數 newlist >>> mylist # 檢查目前的變數 mylist >>> mylist.sort() # 用 sort() 將 mylist 就地排序 >>> mylist # 再次檢查目前的變數 mylist >>> mylist.reverse() # 用 reverse() 將 mylist 就地反轉 >>> mylist # 再次檢查目前的變數 mylist ### ch2-32:list 元素的新增與串接。插入 (insert)、附加 (append)、擴展 (exted) >>> s = [0, 1, 2] # 建立串列物件 >>> s.insert(1, 9) # 在索引 1 插入 9 >>> s # 檢查目前的變數 s >>> s = [0, 1, 2] # 初始化串列物件 >>> s.append(3) # 在最後面加入 3 >>> s # 檢查目前的變數 s >>> s = [0, 1, 2] # 初始化串列物件 >>> s.extend([4, 5]) # 在最後面串接 list >>> s # 檢查目前的變數 s >>> s = [0, 1, 2] # 初始化串列物件 >>> s += [4, 5] # 在最後面串接 list >>> s # 檢查目前的變數 s ### ch2-33:list 元素的尋找 (index)、計數 (count)、移除 (remove)、刪除 (clear)、取出 (pop) >>> s = [0, 1, 2, 1] # 建立串列物件 >>> s.index(1) # 在索引 1 找到了,結果為 1 >>> s.count(1) # 共有兩個 1,結果為 2 >>> s.remove(1) # 刪除索引 1 的元素 >>> s # 檢查目前的變數 s >>> s = [0, 1, 2, 3] >>> s.pop(1) # 取出索引 1 的元素,傳回 1 >>> s # 檢查目前的變數 s >>> s.pop() # 取出最後一個元素,傳回 3 >>> s # 檢查目前的變數 s ### ch2-34:串列的複製 (copy) >>> a = [0, 1, 2, 3] # 建立串列物件 >>> b = a # b 和 a 綁到同一份資料 >>> b[0] = "abc" # 更改了 b 的內容 >>> a # 改了 b,結果也改了 a ### ch2-35:tuple 的 method,計數 (count) 和 尋找 (index) >>> t = ('a', 'b', 'c', 'd', 'd') # 建立 tuple 物件 >>> t.count('d') # 'd' 出現 2 次,傳回 2 >>> t.index('d') # 'd' 第一次出現在索引 3 這個位置 ### ch2-36:字串 (string) 的 method >>> "ab5".upper() # 傳回全部轉大寫的新字串 >>> "ab5".lower() # 傳回全部轉小寫的新字串 >>> "ab5".isalpha() # 是否全部都英文字 >>> "ab5".isdigit() # 是否全部都數字 >>> "ab5".isalnum() # 是否全部都英數字 ### ch2-37:字串的字元尋找與取代 >>> "ab5ab5a".find("b5") # 第一次出現目標的位置 (若無,則傳回 -1) >>> "ab5ab5a".rfind("b5") # 最後一次出現目標的位置 (若無,則傳回 -1) >>> "ab5".startswith("ab") # 是否以 "ab" 開頭 >>> "ab5ab5a".endswith("B5") # 是否以 "B5" 結尾 (大小寫有別) >>> "Ab5Ab6'.replace("Ab", 'c') # 傳回所有的 "Ab" 都會換成 'c' 的新字串,結果為 "c5c6" ### ch2-38:字串的去頭尾 >>> " ab5 ".strip() # 傳回刪除左右連續空白的新字串 >>> " ab5 ".lstrip() # 傳回刪除左側連續空白的新字串 >>> "--ab5--".rstrip('-') # 傳回刪除右側連續 '-' 的新字串 ### ch2-39:字串的切割與組裝 >>> "1,2,3".split(',') # 以 , 切割 >>> "1,2,,3,".split(',') # 若切出的片段是空的,則為 '' >>> "1 2 3".split() # 省略參數時,會以連續空白來切割 >>> " 1 2 3".split() # 會先將頭尾空白去除,再以連續空白來切割 >>> ','.join(['1', '2', '3'] # 以 , 組合串列中的字串 >>> " or ".join({'a', 'b', 'c'}) # 注意,set 元素是無順序的 ### ch2-40:集合 (set) 的 method,元素的新增、刪除、與取出 >>> s = {0, 1, 2} # 建立 set 物件 >>> s.add(3) # 請注意,set 中的元素是無順序的 >>> s.remove(2) # 刪除 2 >>> s.pop() # 隨機取出 ### ch2-41:判斷是否為子集合 (subset) 或超集合 (superset) >>> s = {1, 2, 3} # 建立 set 物件 >>> t = {1, 2} # 建立 set 物件 >>> s.issubset(t) # s 是否為 t 的子集合 >>> s.issuperset(t) # s 是否為 t 的超集合 ### ch2-42:字典 (dict) 的「以鍵查值」method >>> d = {1:3, 2:4} # 建立 dict 物件 >>> d.get(2, 8) # 傳回 4 >>> d.get(7, 8) # 鍵 7 不存在,傳回預設值 (第 2 個參數) >>> d.get(7) # 鍵 7 不存在,傳回 None >>> d = {1:3, 2:4} # 建立 dict 物件 >>> d.setdefault(2, 8) # 傳回 4,d 不變 >>> d.setdefault(7, 8) # 傳回 8,d = {1:3, 2:4, 7:8} >>> d.setdefault(7) # 傳回 None,d = {1:3, 2:4, 7:None} ### ch2-43:字典 (dict) 的「以鍵查值刪元素」method >>> d = {1:3, 2:4} # 建立 dict 物件 >>> d.pop(2, 8) # 傳回 4,d = {1:3} >>> d.pop(7, 8) # 傳回 8,d 不變,d = {1:3} >>> d.pop(7) # KeyError: 7,沒找到鍵又無預設值,發生錯誤 >>> d = {1:3, 2:4} # 建立 dict 物件 >>> d.popitem() # 隨機傳回 (2, 4),d = {1:3} ### ch2-44:以字典更新字典 >>> d1 = {1:3, 2:4} # 建立 dict 物件 d1 >>> d2 = {2:5, 3:6} # 建立 dict 物件 d2 >>> d1.update(d2) # d1 = {1:3, 2:5, 3:6},鍵 2 的值被改了,鍵 3 是新增的 ### ch2-45:dict 的其他內建的 method: keys()、values()、items() 可以整批讀取字典中的鍵、值、或鍵與值 >>> d = {1:3, 2:4} # 建立 dict 物件 >>> d.items() # 建立 dict_items 的型別 >>> type(d.items()) # 查詢 d.items 的型別 >>> myList = list(d.items()) # 取其元素,建一個 list >>> myList # 結果為 [(1, 3), (2, 4)],以成對 (鍵, 值) tuple 組成的 list