標籤:encoding 開啟 coding 代碼塊 過多 變數 span 擴充 全域
2018.3.7
一、列表作用
1、去重
去除列表中重複的元素並且變成一個集合list = set(list)
2、關係測試
取list1和list2列表的交集 list1.intersection=(list2)
取list1和list2列表的並集 list1.union=(list2)
取list1和list2列表的差集 list1.difference=(list2)
(取出list1裡面有,list2裡面沒有的)
取list1和list2列表的對稱差集
list1.symmetric_difference(list2)
判斷list1是否是list2的子集list1.issubset(list2)
判斷list1是否是list2的父集list1.issuperset(list2)
判斷list1和list2列表是否沒有交集list1.isdisjoint(list2)
用運算子表達
交集 list1 & list2 並集 sslist1 | list2
差集 list1 - list2 對稱差集list1 ^ list2
集合增刪改查
list1.add(999) 集合沒有插入,只有增加,並且是無序的
list1.update([888,7,5]) 添加多項
list1.remove(1)刪除
判斷key是否在字典裡 key in list1
判斷key是否不是在字典裡 key not in list1
二、檔案操作
f = open(“yesterday”, ‘a’,encoding = “utf-8”)
檔案控制代碼
a (append)添加
w (write)寫,如果檔案不存在,建立新檔案寫入
r+ (讀寫入模式)以讀和追加(追加在檔案尾)的模式開啟
w+ 先建立一個檔案,再寫,最後再讀
rb 二進位讀檔案
rb應用地方
1、python3.0中網路傳輸只能用二進位
2、一行一行的讀檔案,在第二行加入分割線
(f.readlines只適合讀小檔案)
迴圈檔案讀出來,
for index, line in enumerate(f.readlines()):
if index == 2:
print("-----分割線-----")
continue
print(line.strip())
處理大檔案,一行一行的讀,讀完一行就刪除
#進階寫法
count = 0
for line in f:
if count == 1:
print("-----分割線-----")
count += 1
continue
print(line.strip())
count += 1
f.seek(0)檔案游標回到最開始
檔案的一些操作
f.name() 檔案名稱字
f.flush() 即時重新整理
f.truncate(10) 從第10個字元開始截斷,後面的清空
**類似於進度條建立**
import sys,time
sys.stdout.write(‘*’)
sys.stdout.flush()
time.sleep(0.1)
檔案修改
建立一個新檔案,再逐行寫入,遇到需要修改的地方進行修改再寫入,達到修改檔案的目的
with 語句 (with代碼塊執行完畢時,內部會自動關閉並釋放檔案資源)
with open(‘log, r) as f:
三、字元編碼與轉碼
轉碼先要decode轉換成unicode碼再encode轉換成目標編碼形式
例:gbk轉utf8
decode(“本身的編碼格式”)
encode(“目標編碼格式”)
gbk_to_utf8 = s_gbk.decode(“gbk”)
gbk_to_utf8 = gbk_to_gbk.encode(“utf8”)
五、函數與函數式編程
1.物件導向:類(class)
2.面向過程:過程(def)
3.函數式編程:函數(def)
函數是邏輯結構化和過程化的一種編程方法
使用函數的三大特點
1.代碼重用 2.保持一致性 3.可擴充
函數傳回值:
傳回值數=0;返回none
傳回值數=1;返回object
傳回值數>1;返回tuple
傳回值是返回函數執行完畢的結果,用於後面程式執行方式判斷
參數:
1.形參和實參
2.位置參數和關鍵字參數(標準調用:實參位置與形參位置一一對應,關鍵字調用:位置無固定,關鍵字必須在位置參數後面)
3.預設參數
4.參數組:*數組名(把N個未知參數轉成元組的方式)
**字典名(把N個關鍵字參數轉成字典的方式)
函數內局部變數只能在函數內生效
不應該在函數內部更改全域變數,非要改,用“global 全域變數”
除了字串和整數不能再函數內改全域變數,列表、字典等都可以更改
*遞迴*
如果一個函數在內部調用自己,叫遞迴函式
特性:
1.必須有個明確的結束條件
2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少
3.遞迴效率不高,遞迴層次過多會導致棧溢出
*函數式編程*
輸入是確定的,輸出就是確定的
*高階函數*
變數可以指向函數,函數的參數能接受變數,那麼一個函數可以接收另一個函數作為參數,這種函數就稱之為高階函數
作業:實現刪除,建立,查詢功能
Studing Day4 - python基礎4