1. recode
列表(lidt):[];可變,有序;元素時任何類型
增加:apped(),insert(),extend()
刪除:del,remove(),pop()
更改:列表[下標]=新值
查:列表[下標],切片,遍歷
字典(dict):{};可變,無序;鍵唯一,值任意類型
增加:字典[key]=值,update(),setdefault(key,默認值)
刪除:del,pop(),clear()
更改:字典[key]=值
查:字典[key],字典.get(key,默認值),遍歷
元祖(tuple):();不可變,有序;元素任意
查:和列表一樣
不能增刪改。
集合(set):{};可變,無序;元素唯一不可變
增加:add(),update()
刪除:remove()
查:遍歷
不能改
集合的數(shù)學運算:包含(>=,<=),并集(|),交集(&),差集(-),補集(^)
2.深拷貝和淺拷貝
拷貝:將變量中的值復制一份,產(chǎn)生新的數(shù)據(jù),然后將新的數(shù)據(jù)的地址返回。
a=[1,2,3,4]
b=[2, 3]
list1=[a,b]
list2=list1.copy() #淺拷貝
list1[1][1]=50
print(list2)
import copy
list2=copy.deepcopy(list1) #深拷貝
list1[1][0]=100
print(list1)
print(list2)
# [[1, 2, 3, 4], [2, 50]]
# [[1, 2, 3, 4], [100, 50]]
# [[1, 2, 3, 4], [2, 50]]
import copy導入copy庫
copy.copy(對象):淺拷貝,直接拷貝地址(切片,copy()都是淺拷貝)
copy.deepcopy(對象):深拷貝,將地址對應的值拷貝,產(chǎn)生新的地址
3.字典和列表的應用
列表和字典的元素可以是任何類型的數(shù)據(jù)
列表中有字典
persons=[
{"name":"張三","age":"30","sex":"男"}
{"name":"玩五","age":"90","sex":"男"}
]
練習 輸出年齡最大的學生
persons = [
{"name": "張三", "age": 30, "sex": "男"},
{"name": "玩五", "age": 60, "sex": "男"},
{"name": "小五", "age": 60, "sex": "男"}
]
max_age = 0
for a in persons:
if max_age < a["age"]:
max_age = a["age"]
for b in persons:
if b["age"] == max_age:
# 輸出最大年齡的人的信息
print(b)
練習:輸入一個學生
my_class = {
"class_name": "python1807",
"location": "18_6",
"all_student": [
{"name": "小花", "age": "89", "school": "川大"},
{"name": "小2花", "age": "9", "school": "北大"},
{"name": "小3花", "age": "8", "school": "電大"},
{"name": "小4花", "age": "55", "school": "郵大"}
]
}
name = input("姓名:")
age = input("年齡:")
school = input("學校:")
my_class["all_student"].append({"name": name, "age": age, "school": school}
練習:輸出年齡小于20的學生
my_class = {
"class_name": "python1807",
"location": "18_6",
"all_student": [
{"name": "小花", "age": "89", "school": "川大"},
{"name": "小2花", "age": "9", "school": "北大"},
{"name": "小3花", "age": "8", "school": "電大"},
{"name": "小4花", "age": "55", "school": "郵大"}
]
}
for a in my_class["all_student"][:]:
if a["age"]<=20:
my_class["all_student"].remove(a)
print(my_class["all_student"])
4.函數(shù)
1.函數(shù)
為什么要用函數(shù):1.許多代碼會重復多變2,功能改變時要修改多處代碼
函數(shù):對實現(xiàn)某一特一功能的代碼進行封裝
函數(shù)分類:自定義函數(shù)(程序員自己聲明實現(xiàn)其功能)和內(nèi)置函數(shù)(系統(tǒng)已經(jīng)聲明實現(xiàn)完成)
聲明函數(shù):
def 函數(shù)名(參數(shù)列表):
函數(shù)體
說明:
a.def-->關鍵字
b.函數(shù)名-->標識符 。遵守PEP8命名規(guī)范(所有字母小寫,多個單詞之間使用下劃線隔開,見名知意
c.()--->固定格式
d.參數(shù)列表——->形參,參數(shù)名1,參數(shù)名2…………(多個或者沒有)用來從函數(shù)外部給函數(shù)里面?zhèn)髦涤玫?br>
e.:--->固定格式
f.函數(shù)體---->實現(xiàn)函數(shù)功能的代碼段。
2.聲明函數(shù)的步驟
a.確定函數(shù)的功能
b.根據(jù)功能確定函數(shù)名
c.確定參數(shù):參數(shù)有幾個(實現(xiàn)函數(shù)的功能需不需要從外面?zhèn)髦担枰獋鲙讉€值)
d.實現(xiàn)函數(shù)的功能
e.確定返回值
3.函數(shù)的調(diào)用
聲明函數(shù)時不會執(zhí)行函數(shù)體,只有在調(diào)用時才會執(zhí)行
語法 :函數(shù)名(實參列表)
調(diào)用函數(shù):
a.回到函數(shù)聲明的位置
b.用實參給形參賦值
c.執(zhí)行函數(shù)體
d.返回返回值
e.回到函數(shù)調(diào)用的位置,接著執(zhí)行后面的代碼
4.函數(shù)的參數(shù)
位置參數(shù):按照實參的順序一一給形參賦值
關鍵字參數(shù):形參1=值1,形參2=值2
def fun1(a,b):
print(a,b)
fun1(a=10,b=20)
默認參數(shù):函數(shù)聲明的時候可以給參數(shù)設置默認值.有默認值的參數(shù)必須放在參數(shù)列表的最后
def fun1(b,c,a=20):
print(a,b,c)
fun1(1,2)
fun1(1,2,3)
#20 1 2
#3 1 2
fun1(b=10,c=90)
fun1(10,c=90)
不確定參數(shù)個數(shù):在形參的前面加*,將這個形參變成一個元祖,用來接收多個參數(shù),如果函數(shù)有多個參數(shù),那么不定長參數(shù)要放在最后
def fun1(name,age,*scores):
print(name,scores,age)
fun1("jk",1,2,3,89)
函數(shù)的返回值:函數(shù)的返回值就是函數(shù)調(diào)用表達式的值,就是執(zhí)行遇到return后,后面表達式的值
python中所有函數(shù)都有返回值,默認None。
函數(shù)調(diào)用表達式-->調(diào)用函數(shù)的語句(函數(shù)名(實參))
return-->關鍵字,只能寫在函數(shù)體中,用來返回返回值和結(jié)束函數(shù)
如果實現(xiàn)函數(shù)的功能會產(chǎn)生數(shù)據(jù),就返回新的數(shù)據(jù)