1、去重
list_1 = set([1,2,3,4,0,7,4,8])
list2 = set([99,34,6,8,3])
list3 = set([0,4,8])
list4 = set([84,45,49])
print(list_1) <<<
2、 交集
list_1 & list2
print(list_1.intersection(list2)) <<<
3、並集(合集)
list_1 | list2
print(list_1.union(list2)) <<<
4、子集
print(list_1.issubset(list2)) <<< false
5、父集
print(list_1.issuperset(list3)) <<< true
6、差集
list_1 - list2
print(list_1.difference(list2)) <<<
7、補集
list_1 ^ list2
print(list_1.symmetric_difference(list2)) <<<
8、判斷是否有交集(沒有為true)
print(list_1.isdisjoint(list4)) <<< true
9、小知識點補充
list_1.add(59) #新增
list_1.update([10,37,42]) #新增多項
list_1.remove(8) #刪除指定項,沒找到會報錯
list_1.discard(88) #刪除指定項,沒找到不報錯
list_1.pop() #隨機刪除
檔案操作
f = open("file.txt","r",encoding="utf-8")
f.read() ----> 一次性讀所有
f.readline() -----> 每次讀取一行
f.readlines() ----> 讀取檔案所有行,生成乙個列表,每行為乙個元素(只適合於讀小檔案)
f.tell() ----> 當前檔案所在的指標,按字元個數計數
f.seek(0) -----> 指標回到最開始位置
f.encoding -----> 檔案字元編碼
f.seekable -----> 判斷是否能移動指標位置(
true/false
)f.flush() -------> 寫入檔案時不一定及時寫入到硬碟,可能還在快取中,
flush
可以用於重新整理使之寫入到硬碟(快取寫到一定值才會寫入硬碟)
f.truncate(10) ------> 從頭開始截斷,不管指標在哪
##### example #######(記憶體中只儲存一行,可讀取大檔案,讀一行覆蓋一行
)for line in f:
print(line)
########## 列印進度條
##########
import sys,time
for i in range(50):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.1)
r唯讀;r+可讀可寫;兩都都不建立
w新建只寫,不能讀;
w+新建讀寫,二者都會將檔案內容清零
w+與r+
區別:r+: 可讀可寫,若檔案不存在,報錯;w+: 可讀可寫,若檔案不存在,建立
########### r+與a+
區別############
fd = open("1.txt",'w+')
fd.write('123')
fd = open("1.txt",'r+')
fd.write('456')
fd = open("1.txt",'a+')
fd.write('789')
結果:456789
說明r+進行了覆蓋寫。
以a,a+的方式開啟檔案,附加方式開啟
(a:附加寫方式開啟,不可讀;
a+:
附加讀寫方式開啟)
以 'u' 標誌開啟檔案
, 所有的行分割符通過
python
的輸入方法(例
#如 read*() )
,返回時都會被替換為換行符
\n. ('ru'
模式也支援
'rb'
選項) .r和u
要求檔案必須存在
不可讀的開啟方式:w和
a若不存在會建立新檔案的開啟方式:a,a+,
w,w+1、函式優點
(1) 減少重複**
(2) **統一性
(3) 可擴充套件性
2、非固定引數
def test1(x, *args):
print(x)
print(args)
def test2(x,**kwargs)
print(x)
print(kwargs)
*args ----> 接收位置引數變成了元組(包括字典,元組)
**kwargs -----> 接收關鍵字引數轉成字典
注意:關鍵字引數不能寫在位置引數前面
3、形參和實參
4、區域性變數與全域性變數
區域性變數只在函式裡生效,不會改變全域性變數的值
school = "oldboy"
def change_name(name):
global school # 定義全域性變數可更改
school
school = "mage"
print("before change",name,school)
name = "alex li"
print("after change",name)
change_name('alex')
print(school)
>>> before change alex mage
>>> after change alex li
>>> mage
字串跟整數不能在函式中改全域性變數,列表、字典、集合都是可以在函式裡面改的
注意:不應該在函式中改全域性變數
5、遞迴特性
(1) 必須有乙個明確的結束條件
(2) 每次進入深一層遞迴時,問題規模相經上次遞迴都應有所減少
(3) 遞迴效率不高,遞迴層次過多會導致棧溢位
6、函式與函式式程式設計
物件導向 ---> 類
----> class
面向過程 ----> 過程
----> def
函式式程式設計 ----> 函式
----> def
函式式程式設計:只要輸入是確定的,輸出也是確定的
Python自動化開發學習1
一 開篇的大段毒雞湯真是夠補。正好在外面旅遊,一路上帶著耳機就全部聽完了。二 進入正題,結果還是介紹。說下版本問題,盡量還是用python3。三 hello world。就是個儀式感,別的沒啥 print 你好 四 變數。雖然駝峰規則也行,但是python推薦用 下劃線,那就用下劃線把。變數名全大寫...
python自動化開發 6 常用模組 續
python的常用模組 續 shelve模組 是乙個簡單的k,v將記憶體資料通過檔案持久化的模組,可以持久化任何pickle可支援的python資料格式。configparser模組 對配置檔案進行解析。hashlib模組 主要用於加密。例子 輸出十六進製制md5值 1 author ryb2 co...
前端自動化開發之grunt
上篇文章介紹了前端模組化開發工具seajs,利用seajs我們可以輕鬆實現前端的模組化程式設計,參見 一 準備工作 再使用grunt之前,我們先要安裝node.js,利用node的包管理工具npm來安裝grunt 關於如何安裝及配置node不屬於本文涉及範疇,所以在這裡不做介紹,需要檢視的童鞋可以參...