1. 程式人生 > >學習Python基礎--------3

學習Python基礎--------3

適合 set 一次 是否 lin 所有 author == 3.0

集合操作

集合是一個無序的,不重復的數據組合,它的主要作用如下:

  去重,把一個列表變成集合,就自動去重

  關系測試,測試兩組數據之前的交集,差集,並集等關系# Author:Zhiyu Su

list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)          #轉換為集合

list_2 = set([2,6,0,66,22,8,4,])
print(list_1,list_2)

‘‘‘
#交集   intersection
print(list_1.intersection(list_2))

#並集  union
print(list_1.union(list_2))

#差集 difference
print(list_1.difference(list_2)) print(list_2.difference(list_1)) #子集 list_3 = set([1,3,7]) print(list_3.issubset(list_1)) #判斷是否是子集 list3是否是list1的子集 print(list_1.issuperset(list_3)) #判斷是否是父集 list1是否是list3的父集 #對稱差集 print(list_1.symmetric_difference(list_2)) #把倆個集合裏面互相都沒有的取出來 print(---------------------
) list_4 = set([5,6,7,8]) print(list_3.isdisjoint(list_4)) #判斷是否有交集 #交集 print(list_1 & list_2) #並集 print(list_2 | list_1) #差集 print(list_1 -list_2) #in list1 but not in list #對稱差集 print(list_1 ^ list_2) print(------------------) #增 list_1.add(999) list_1.update([888,777,555])
#使用remove()可以刪除一項
t.remove(‘h‘)

#set的長度
len(s)
print(list_1.pop())#s隨機刪
x in s  
測試 x 是否是 s 的成員  
  
x not in s  
測試 x 是否不是 s 的成員  
  
s.issubset(t)  
s <= t  
測試是否 s 中的每一個元素都在 t 中  
  
s.issuperset(t)  
s >= t  
測試是否 t 中的每一個元素都在 s 中  
  
s.union(t)  
s | t  
返回一個新的 set 包含 s 和 t 中的每一個元素  
  
s.intersection(t)  
s & t  
返回一個新的 set 包含 s 和 t 中的公共元素  
  
s.difference(t)  
s - t  
返回一個新的 set 包含 s 中有但是 t 中沒有的元素  
  
s.symmetric_difference(t)  
s ^ t  
返回一個新的 set 包含 s 和 t 中不重復的元素  
  
s.copy()  
返回 set “s”的一個淺復制  
 

文件操作

  1. 打開文件,得到文件句柄並賦值給一個變量
  2. 通過句柄對文件進行操作
  3. 關閉文件

打開文件

#data = open(yesterday,encoding=utf-8).read()
f
= open(yesterday2,a,encoding=utf-8) #文件句柄:文件的內存對象 文件名 字符集硬盤上的起始位置 #a = append 追加 f.write(when i was young i listen to the radio\n)#寫入 data = f.read()     #read的讀第二遍無法獲取內容因為第一次讀取之後光標到尾端 print(----read,,data) f.close() #關閉模式

文件打開模式

py3.0傳輸只能用二進制模式 (文件是以二進制編碼不是二進制)

f = open(‘yesterday2‘,‘r‘,encoding=‘utf-8‘) #文件句柄 讀
f = open(‘yesterday2‘,‘w‘,encoding=‘utf-8‘) #文件句柄 寫
f = open(‘yesterday2‘,‘a‘,encoding=‘utf-8‘) #文件句柄 追加

f = open(yesterday2,r+,encoding=utf-8) #文件句柄 讀寫  讀取一個文件然後在追加
f = open(yesterday2,w+,encoding=utf-8) #文件句柄 寫讀  創建一個文件再寫入
f = open(yesterday2,w+,encoding=utf-8) #文件句柄 追加寫
f = open(yesterday2,wb) #文件句柄 二進制讀
f.write(hello binary\n.encode())  #二進制寫入
f.close()

讀取文件

print(f.readline())  #readline讀取一行
for i in range(5):    #讀取五行
  print(f.readline())

print(f.readlines()) #文件裏所有內容一列表形式打印出來

for line in f.readlines():#循環打印文件
  print(line.strip())#打印時會出現空行 是讀取文件時把每行的換行符打印



#循環不打印文件第10行
for index,line in enumerate(f.readlines()):   #文件全部獲取到內存裏 適合小文件讀取
if index== 9:
print(‘----------‘)
continue
print(line.strip())
#高效版及時讀寫   叠代器
count = 0
for line in f:
count += 1
if count == 9:
print(‘----------‘)
continue
print(line)


文件光標操作以及其他操作

f.seek(10)
f.truncate(15) #如果不寫值就是清空,寫值就是截斷

print(f.tell())    #文件句柄指針
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())  #讀取指針,按字節算
f.seek(0)    #移動光標
print(f.readline())

print(f.encoding)  #打印文件的編碼

print(f.flush())  #實時更新到硬盤裏

print(f.fileno())#返回文件句柄的編號 當前打開的io接口

有關於flush 實時刷新的進度條

# Author:Zhiyu Su
import sys,time
for i in range(50):
    sys.stdout.write(/)
    sys.stdout.flush()
    time.sleep(0.1)

with語句

為了避免打開文件後忘記關閉,可以通過管理上下文with在py2.7以後同時打開多個文件

with open(log,r)as f:
  print(f.readline())

with open(‘log1‘)as obj1,open(‘log2‘)as obj2:
  .....

字符編碼和轉碼

1.在python2默認編碼是ASCII, python3裏默認是unicode

2.unicode 分為 utf-32(占4個字節),utf-16(占兩個字節),utf-8(占1-4個字節), so utf-16就是現在最常用的unicode版本, 不過在文件裏存的還是utf-8,因為utf8省空間udf-8英文連個字節中文三個字節

3.在py3中encode,在轉碼的同時還會把string 變成bytes類型,decode在解碼的同時還會把bytes變回string

技術分享

函數

函數是什麽

定義: 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可

特性:

  1. 減少重復代碼
  2. 使程序變的可擴展
  3. 使程序變得易維護

學習Python基礎--------3