一.淺拷貝
? ? -->.copy()方法
d ={'name':'小黑','age':6,'color':'black'}
d1 = d.copy()????# //拷貝 出來,d和d1 是不同的對象沒有關(guān)系了,id不一樣
d1 = d #d和d1 指向了相同的對象,id 一樣
d['name'] = '小白'
print(d,id(d))
print(d1,id(d1))
# {'name': '小白', 'age': 6, 'color': 'black'} 2989288422856
# {'name': '小黑', 'age': 6, 'color': 'black'} 2989288422928
# {'name': '小白', 'age': 6, 'color': 'black'} 2188128976328
# {'name': '小白', 'age': 6, 'color': 'black'} 2188128976328
-->淺拷貝
d ={'name':{'j':'變黑','a':1},'age':6,'color':'black'}
d1 = d.copy()
d1['name']['j'] ='變白'
print(d,id(d))
print(d1,id(d1))
# {'name': {'j': '變黑', 'a': 1}, 'age': 6, 'color': 'black'} 2025892314640
# {'name': {'j': '變黑', 'a': 1}, 'age': 6, 'color': 'black'} 2025892315000
# {'name': {'j': '變白', 'a': 1}, 'age': 6, 'color': 'black'} 1707227381264
# {'name': {'j': '變白', 'a': 1}, 'age': 6, 'color': 'black'} 1707227381624
# 運(yùn)行結(jié)果:都改了:說明淺拷貝,因?yàn)橹皇强截惲俗值鋵ο?里面還有一層(列表,字典..),這個(gè)不會(huì)進(jìn)行復(fù)制,因此改了一個(gè)就都改變了
二.字典的遍歷
-->三種方法
keys()????values()????items()
d ={'name':'小黑','age':6,'color':'black'}print(d.keys())?????????//dict_keys(['name', 'age', 'color'])
print(d.values())? ? ? ?// dict_values(['小黑', 6, 'black'])
print(d.items())? ? ? ? // dict_items([('name', '小黑'), ('age', 6), ('color', 'black')])
通過for循環(huán)可將序列中的元素拿出來
for k,v in d.items():
????????print(k,v)
name 小黑
age 6
color black
三,集合
????????集合是和列表很相似的序列
不同點(diǎn):
? ? ? ? ? ? -->存儲(chǔ)不可變對象
? ? ? ? ? ? ?-->元素是無序的
? ? ? ? ? ? ?-->元素是唯一的
-->集合的創(chuàng)建
? ? 1.直接創(chuàng)建
d = {1,2,3,4,5,"a",'b'}
print(d,type(d))
{1, 2, 3, 4, 5, 'a', 'b'}
{1, 2, 3, 4, 5, 'b', 'a'}
d = {1,2,3,4,2,1,1,'a',3,4,'a'}
print(d)
{1, 2, 3, 4, 'a'}
?2.set函數(shù)創(chuàng)建
d =set([1,2,3,4,5])
print(d,type(d))
{1, 2, 3, 4, 5}
-->集合的方法
-->in 和? not in? ? ??
s = {1,2,3,4}
print(1 in s)? ? ? ? True
print(1 not in s)????????False
-->len()? ? ? ? //返回集合中元素個(gè)數(shù)
s1 = {1,2,3,4,5}
print(len(s1))? //5
-->add? //添加單個(gè)元素
s = {1,2,3,4,}
s.add(6)
print(s)
{1, 2, 3, 4, 6}
-->update(參數(shù)) //添加多個(gè)元素,參數(shù)可以是元組,列表,集合,集合
s1 = {1,2,3,4,5}
s2 = {6,7}
s1.update(s2)
print(s1)
{1, 2, 3, 4, 5, 6, 7}
-->pop? //隨即刪除一個(gè)元素
s1 = {1,2,3,4,5}
s1.pop()
print(s1)?
{2, 3, 4, 5}
--> remove????????刪除指定元素
s = {1,2,3,'a','b'}
s.remove(3)
print(s)
{1, 2, 'a', 'b'}
-->clear //清空集合,
s = {1,2,3,4}
s.clear()
print(s)
set()
-->集合的運(yùn)算
? ? ? ? 1.交集(&)
? ? ? ? 2.并集(|)
? ? ? ? 3.差集(-)? ? ? ??
? ? ? ? 4.亦或集
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(s1 & s2)? ? ? ? //同數(shù)學(xué)集合運(yùn)算規(guī)則
print(s1 | s2)???????? //同數(shù)學(xué)集合運(yùn)算規(guī)則
print(s1 - s2)? ? ? ? //s1 減去 s1 s2的交集
print(s1 ^ s2)? ? ? ? // s1 | s2? 減去?? s1 & s2
{3, 4, 5}
{1, 2, 3, 4, 5, 6, 7}
{1, 2}
{1, 2, 6, 7}
5.<= 檢驗(yàn)子集
6.< 檢驗(yàn)真子集
7.>=? 超集
8.>? 真超集
s1 = {1,2,3,4,5}
s2 = {1,2,3}
print(s2 < s1)
print(s2 <= s1)
print(s1 > s2)
print(s1 >= s2)
True
True
True
True
四.函數(shù)的簡介
函數(shù):一個(gè)對象 萬物皆對象
函數(shù):把具有一定功能的代碼封裝起來,需要的時(shí)候調(diào)用
? ? 格式:
? ? ? ? def 函數(shù)名(形參1,形數(shù)2,...):? //函數(shù)聲明
? ? ? ? ? ? 代碼? ? ? ? ? ? ? ? ? ? ? //函數(shù)實(shí)現(xiàn)的功能
? ? ? ? 函數(shù)名(實(shí)參1,實(shí)參2,...)? ? ? ? //函數(shù)調(diào)用"""
實(shí)例:
def fn():
print('hello world')
fn()
print(fn)
hello world
<function fn at 0x0000014FEFECD268>
fn:函數(shù)這個(gè)對象(object)
五.函數(shù)的參數(shù)
? ?1.形參和實(shí)參:
? ? 形參:定義 函數(shù)時(shí)的 參數(shù)變量
? ? 實(shí)參:調(diào)用 函數(shù)時(shí),使用的參數(shù)變量
參數(shù)傳遞的過程,就是 把實(shí)參的引用 傳遞給 形參 ,使用實(shí)參的值來執(zhí)行函數(shù)體的過程。
在 Python 中,函數(shù)的 實(shí)參/返回值 都是是靠 引用 來傳遞來的
-->加法交互函數(shù)
def fn(a,b):
????print(a + b)
fn(int(input('請輸入加數(shù)1:')),int(input('請輸入加數(shù)2:')))
請輸入加數(shù)1:2
請輸入加數(shù)2:4
6
2.參數(shù)傳遞方式
-->位置傳參?????對號入座
def fn(a,b,c):
? ? ?print('a = ',a)
????print('b = ', b)
????print('c = ', c)
fn(1,2,3)
a =? 1
b =? 2
c =? 3
-->關(guān)鍵字傳參
def fn(b = 1, c = 2, a = 3):
? ? ?print('a = ', a)
? ? ?print('b = ', b)
? ? ?print('c = ', c)
fn(4,5,6)
a =? 6
b =? 4
c =? 5
-->混合傳參
[注意]關(guān)鍵字參數(shù)不能放在位置參數(shù)前面
def fn(b = 1, c, a):
? ? ?print('a = ', a)
? ? ?print('b = ', b)
? ? ?print('c = ', c)
fn(4,5,6)
SyntaxError: non-default argument follows default argument