1. 程式人生 > >史上最全Python基礎合集!集合用法、檔案操作字元轉換、函式

史上最全Python基礎合集!集合用法、檔案操作字元轉換、函式

史上最全Python基礎合集!集合用法、檔案操作字元轉換、函式

 

史上最全Python基礎合集!集合用法、檔案操作字元轉換、函式

 

list = {1, 3, 6, 5, 7, 9, 11, 3, 7} # 定義集合方式一 
list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7]) # 定義集合方式二 
list2 = set() # 定義一個空集合 
print(list1, list) # 列印後可看到,集合中的元素已自動去重 
print(3 in list) # 判斷一個元素是否在集合中,返回bool值 
print(20 not in list1) # 判斷一個元素是否不在集合中,返回bool值 
list1.add(99) # 新增元素 
list1.update([10, 20, 30, 2]) # 新增多項 
list1.remove(3) # 刪除一個元素,若元素不存在則報錯 
print(list1.discard(8)) # 刪除一個元素,若元素不存在則不做任何操作 
print(len(list1)) # 計算集合中元素的個數 
print(list1.pop()) # 從集合中隨機彈出一個元素 
list.clear() # 清空集合 

集合的運算

list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7]) 
list2 = set([2, 4, 6, 8, 3, 5]) 
print(list1, list2) 
# 交集 
print(list1.intersection(list2)) 
print(list1 & list2) 
# 並集 
print(list1.union(list2)) 
print(list1 | list2) 
# 差集 
print(list1.difference(list2)) 
print(list1 - list2) 
# 對稱差集 
print(list1.symmetric_difference(list2)) 
print(list1 ^ list2) 
# 是否為子集 是否為父集 
list3 = set([9, 11]) 
print(list3.issubset(list1)) 
print(list1.issuperset(list3)) 
# 若兩個集合的交集為空 返回true 
list4 = set([20, 30]) 
print(list1.isdisjoint(list4)) 
print(list1.isdisjoint(list2)) 

私信菜鳥 007

檔案(File)操作

在開發中經常會有讀寫檔案的需求,相關的程式碼實現如下:

檔案的開啟模式

史上最全Python基礎合集!集合用法、檔案操作字元轉換、函式

 

檔案的讀操縱、寫操作、追加操作、按行讀取檔案

# read 直接讀檔案全文 
f = open('test', 'r', encoding='utf-8') # 檔案控制代碼 
data = f.read() 
print(data) 
# write 向檔案中寫 
f = open('test1', 'w', encoding='utf-8') 
f.write('我愛北京天安門, 
天安門上太陽升') 
# append 在檔案最後追加內容 
f = open('test1', 'a', encoding='utf-8') 
f.write('呀呼嘿') 
# loop 按行讀取檔案 
# high bigger 將檔案作為迭代器 讀一行列印一行 記憶體中只快取一行 
f = open('test', 'r', encoding='utf-8') 
count = 0 
for l in f: 
 if count == 9: 
 print('----------') 
 count += 1 
 continue 
 print(l.strip()) 
 count += 1 
# low loop 將檔案內容全部讀取至記憶體,效率低 
f = open('Sonnet', 'r', encoding='utf-8') 
for index, line in enumerate(f.readlines()): 
 if index == 9: 
 print('------------') 
 continue 
 print(line.strip()) 

檔案的函式

f = open('test', 'r', encoding='utf-8') # 檔案控制代碼 讀模式開啟檔案 
print(f.tell()) # 獲取當前游標位置 
print(f.readline()) 
print(f.readline()) 
print(f.tell()) 
print(f.readline()) 
f.seek(10) # 跳轉游標到第10個字元 
print(f.readline()) 
print(f.encoding) # 獲取檔案編碼 
print(f.fileno()) # i don't know what it is 
print(f.isatty()) # 判斷檔案是否是tty終端 
print(f.readable()) # 判斷檔案是否是可讀 
print(f.writable()) # 判斷檔案是否是可寫 
print(f.seekable()) # 判斷檔案是否是可跳轉游標 (tty不可跳轉 
f.flush() # 當用寫模式開啟檔案時 並不是寫一句系統就會呼叫一次io 若需要及時重新整理硬碟中的檔案內容 可以呼叫該函式 
f.close() # 關閉檔案 
print(f.closed) # 判斷檔案是否關閉 

檔案的修改

# 檔案的修改 直接修改檔案本身比較困難 可以將修改寫入另一個檔案中 如有需求可以再寫回檔案本身 
f = open('test', 'r', encoding='utf-8') 
f_new = open('test.bak', 'w', encoding='utf-8') 
for line in f: 
 if '我曾千萬次夢見' in line: 
 line = line.replace('我曾千萬次夢見', '我不想千萬次夢見') 
 f_new.writelines(line) 
f.close() 
f_new.close() 

一個進度條例項 用於理解flush函式的機制 該例項可以實現進度條效果

import sys 
import time 
f = open('Sonnet1', 'w', encoding='utf-8') # 檔案控制代碼 寫模式開啟檔案 會新建一個檔案 若同名檔案存在 則直接覆蓋 
for i in range(10): 
 sys.stdout.write('#') 
 sys.stdout.flush() 
 time.sleep(0.2) 

字元編碼轉換

字元編碼轉換最重要的一點就是,切記unicode是編碼之間的中轉站,若unicode不是目標編碼或者原始編碼,那麼任何兩個編碼相互轉換都需要經過unicode(見下圖)。

需要注意的是,python的預設編碼是ASCII,python3的預設編碼是unicode。

在python3中encode,在轉碼的同時還會把string變成bytes型別,decode在解碼的同時還會把bytes變回string。

 

史上最全Python基礎合集!集合用法、檔案操作字元轉換、函式

 

 

函式

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段。

函式能提高應用的模組性,和程式碼的重複利用率。python提供了許多內建函式(如print());也可以自己建立函式,即使用者自定義函式。

定義一個有自己想要功能的函式,需要遵循以下規則:

進群:960410445   即可獲取數十套PDF!

  • 函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號 () 。
  • 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。
  • 函式的第一行語句可以選擇性地使用文件字串——用於存放函式說明。
  • 函式內容以冒號起始,並且縮排。
  • return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。

待補充知識:函式的引數、變數作用域、遞迴、高階函式。