資料型別
intstr
bool
list
uptul
dict
set可變的,也就是不可雜湊的資料型別
int bool uptul
type(型別)
input獲取到的都是字串
有下標的
dict uptal str
刪lst.pop(下標) 按下標刪除預設刪除最後乙個 del lst 刪除列表 del lst[下標] 可下標刪除 可切片刪除 lst.remove('元素')按元素刪除 lst.clear()清空列表
改lst='元素' 下標改和切片改 直接改 不用去接 不能用replice替換
查 for 迴圈查詢 按下標查詢
其它操作 len(lst) 查長度 lst.count()查元素的個數 lst.index(元素)查元素下標 數字型的列表 lst=[1,2,34,5,6] sort 公升序 sort(reverse=true) 降序 lst.reverse()直倒敘
lst=[1,2,35,56,21]
lst.sort()
print(lst) ---[1, 2, 21, 35, 56]
lst=[1,2,35,56,21]
lst.sort(reverse=(true))
print(lst)-----[56, 35, 21, 2, 1]
uptal 元組 操作 uptal=()
元組不可以增刪,不可變的資料型別 唯一的操作 就是可以檢視for迴圈去查 按下標檢視 裡邊的元素沒要求
dict 字典
dic={}
增 dic=元素 有就替換沒有就新增 dic.setdefault('鍵',值) 有就不做操作 ,沒有就新增
dict.update()
刪dic.pop(鍵) 按鍵刪除 預設刪除最後乙個 del dic 刪除字典 del dic[鍵]可以按鍵刪除 dic.clear)() 清空字典
改dic[鍵]=值 按鍵去改 沒有就是新增
dic2.update(dic1)
更新 被更新的內容如果在 要更新的內容中那值就會被覆蓋
兩個字典中,都沒有一樣的就是合併
print(dic2)
查 dic.get(鍵,值) 有就不做操作,輸出有的值 ,沒有的話就返回none 同樣的 可以把返回你定義的值作為鍵值對放在字典中
可以for迴圈去查
字典中:get和setdefault的 區別 字典裡有鍵時,都不操作.沒有的話,get返回一值而已不會新增,setdefault沒有的話,就會新增
# print(dic2.keys()) # 高仿列表 dict_keys(['33', '66']) 不能使用下標
# print(dic2.values()) # 高仿列表 dict_values(['gg', 'pp']) 不能使用下標
# keys() # 獲取所有的鍵 高仿列表
## values() # 獲取所有的值 高仿列表
## item() # 獲取鍵值 以元祖的形式顯示
集合set()
集合可以天然去重 {} 集合裡的資料型別 必須是不可變的 ,內容要求不可變資料
沒有下標
增set.add()
set.update
刪 clear pop remove
改 先刪後增
查 可以for迴圈
集合 set se = 天然去重 內容要求不可變資料
# 增:
# se.add('內容')
# se.update('可迭代物件')
# 改:
# 集合就是先刪後增
# 查:
# for 迴圈
檔案操作
r w a
r 唯讀 open('檔案',mode='r',encoding='編碼集')
如:f=open('a1.txt',mode='r',encoding='utf-8')
f.reade()
f.close
w 值寫
f=open('a1.txt',mode='w',encoding='utf-8')
f.write()
f.close
w 模式下先清空檔案裡的內容是讀不到的
a 直接在後邊寫
f= open('a1.txt',mode='a',encoding='utf-8')
f.write()
f.close
r+ w+ a+
r+ 先讀後寫
with open('檔案',r+,encoding='utf-8') as f:
f.reade()
f.write()
w+ 先寫後讀
with open('檔案',w+,encoding='utf-8') as f:
f.write()
f.reade()
a+ 寫 du
with open('檔案',a+,encoding='utf-8') as f:
f.write()
a+ 追加寫 讀
# 寫讀的時候是讀不到內容的,除非移動游標
f = open('t2',mode='a+',encoding='utf-8')
f.seek(0)
print(f.read())
f.write('哈哈哈')
seek()移動游標 tell() 檢視游標
# 最常用: r,w,a,r+,a+
with 模式下 是不用close 關閉的
非文子讀取 f = open('qq.jpg',mode='rb')
print(f.read())
# 推薦寫法 相對路徑
函式的初識
函式所謂的函式就是就是把**塊打包來用的
格式def 函式名():
函式體函式名() 呼叫函式
函式的返回值
不寫return返回的是乙個none
寫了return不給值 返回也是none
return 可以返回隨意資料 多個元素返回的都是元祖
return 可以終止這個函式
return值返回給了呼叫者
引數 :
函式的引數:
形參: 定義的時候 形參位置括號內區域性的
位置引數
預設引數
混合引數
實參: 呼叫的時候 實參是括號內的全域性
位置引數
關鍵字引數
混合引數
動態引數 有倆 動態位置引數 動態預設引數
**kwargs 定義的時候是聚合
*kwargs 使用的時候 打散字典的鍵
形參排序: 位置引數 > 動態位置引數 >預設引數》動態預設位置引數
函式的空間名稱: 內建空間 全域性空間 區域性空間
取值:區域性空間》全域性空間》內建空間
載入順序:內建空間》全域性空間》區域性
global 在區域性修改全域性的資料,如果全域性沒有的時候,在區域性修改的時候回建立乙個
nonlocal 在區域性裡,修改離它最近的上一級,上一級不存在就繼續往上找
globals() 檢視全域性作用域中的名字
locals() 檢視當前作用域中的名字
函式名:
函式名可以 當做值 去賦值給變數
函式名可以 當做引數傳遞給函式
函式名可以 當做函式返回值,注意:返回值不能加括號 接力的要一層一層往下傳,中間斷了就接不到了
函式名可以 當做元素存放乙個容器裡
檢視函式的記憶體位址 print(函式名)
閉包:巢狀函式;
簡單的說就是 f1下函式f2 用的變數是f1的值並且return f2
巢狀函式,內部函式使用外部變數(非全域性變數)就是閉包
好處,保護這個變數不被外界修改
生命週期延長
節省開闢空間和銷毀空間的時間差,提高效率
迭代器:可以迴圈檢視 滿足for 迴圈的 __inter__ 和__next__
迭代物件 __inter__ 或者可以被for迴圈的就是可迭代物件
可迭代物件
list
dict
settuple
str不可迭代:int bool
除了int bool 其它 str list set uptal dict 都可以迭代
生成器也是乙個迭代器:
yield
def func():
print()
a=yield k
print()
yield h
g=func()-----這就是乙個生成器
print(g.__next__())-----啟動生成器 乙個next 對應乙個yield
print(g.senk(內容) -----啟動生成器+給上乙個yield等號左邊乙個值
推導式 :
生成器推導式 g=(i for in in range(8))
列表生成器:list=[i for i in range(8)]
集合推導式:set= set= for 迴圈的字典的鍵值,就是裡邊是元組的(鍵,值),外邊是大括號
字典生成器:dic= 出現倆列表時為:lst1=[1,2,3,4] lst2=['a','b' ,'c','d'] dic=
dic =
print()
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...
古文生成器python python(生成器)
生成器 先從列表生成式說起 可以通過簡單的式子,生成有規律的列表 如果把 換為 會發生什麼呢?看到 x 存的不再是列表,而是乙個位址,而這個位址就是我們的生成器物件的位址 這東西有什麼用呢?當然時,節省記憶體啦 假設現在有很龐大的一組資料要處理,貌似不可能把它一次性載入記憶體再進行處理,這時候就體現...