字典
潜复制copy
- copy()该方法对字典进行潜复制
# 非复制
d = {'a':1,'b':2,'c':3}
d2 = d
print('d = ',d)
print('d2 = ',d2)
# 复制
d = {'a':1,'b':2,'c':3}
d2 = d.copy()
print('d = ',d)
print('d2 = ',d2)
# Id不一样,改一个d,另外一个不会变化,两个独立的。
注意结论:copy只会复制字典里面的元素,字典里面还有字典(或其他列表等)是不会复制的,d = {‘a’:{‘d’:6,‘e’:7},‘b’:2,‘c’:3},其中{‘d’:6,‘e’:7}是不会复制的—>潜复制
深复制 import copy
d = {'a':{'d':6,'e':7},'b':2,'c':3}
d2 = copy.deepcopy(d)
遍历字典
‘’’
- keys() 该方法返回字典所有的key
d = {'name':'葫芦娃','age':10,'sex':'男'}
for k in d.key():
print(d[k])
- values() 该方法返回衣蛾序列序列中保存有字典的值
d = {'name':'葫芦娃','age':10,'sex':'男'}
for v in d.values():
print(v)
- items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含有双值子序列,
d = {'name':'葫芦娃','age':10,'sex':'男'}
for k,v in d.items()
print(k,v)
集合的简介
- 集合和列表非常的相似
不同点:
1、集合中只能存储不可变对象
2、集合中存储的对象是无序的(不是按照元素的插入顺序保存的)
3、集合中不能出现重复的元素 - 使用{}来创建集合
s = {10,2,3,4,2,3,4,5,6,7}
s = {[1,2],[3,4]} #注意:集合中不能有其他列表等
print(s,type(s))
# 结果是无序的且不重复的
- set()函数可以将序列和字典转换为集合
s = set([1,2,3,3,4,5,6,6,7])
print(s,type(s))
# 转换为字典,无序且不重复
- 如果使用set()将字典转换为集合的时候,只会包含字典的键 key值
- 无序的,s[0] 无法找到元素(因为是无序的),如果要查找,可以将它转换为列表: list(s)[0]
集合的使用
- 使用 in 和 not in来检查集合中的元素
s = {'a','b',1,2,3}
print('a' in s) #True
- add()向集合中添加元素
s.add(10) - updata()将一个集合中的元素添加到另外一个集合中
s2 = set(‘hello’) # set?? - pop()随机删除集合中的元素
result = s.pop()
print(s)
print(result)
s.remove()删除集合中指定的元素
s.clear
集合的运算
& 符号交集运算
s = {1,2,3,4,5,6}
s1 = {3,4,5,6,7,8,9}
r = s & s1 #结果为交集部分数据
& 符号并集运算
- -符号差集运算
- ^符号亦或集运算
- <= 检查一个集合是否是另一个集合的⼦集
- < 检查一个集合是否是另一个集合的真⼦集
-
=检查一个集合是否是另一个集合的超集
-
检查一个集合是否是另一个集合的真超集
函数
- 函数也是个对象
- 函数可以用来保存一些可执行的代码,并且可以在需要的时候,多次对这些代码调用
函数快速入门
- 语法
def 函数名(形参1,形参2…)
代码块 - 定义一个函数
def fn():
print('这是我的第一个函数!')
print(fn)
fn() --->定义了print('这是我的第一个函数!')这个函数 类似于:fn() = print('这是我的第一个函数!')
# 结果<function fn at 0x00000000004E1E18>
说明:
1、fn() —>定义了print(‘这是我的第一个函数!’)这个函数 类似于:fn() =
print(‘这是我的第一个函数!’)
2、fn是函数对象 fn()调用函数
3、print是函数对象 print()调用函数
函数的参数
- 函数的参数
- 在定义函数的时候,可以在函数名后面的括号中定义梳理 不等的形参
- 定义多个形参要用,隔开
- 形参(形式参数)定义形参就是相当于在函数内部声明了变量,不是赋值
- 实参(实际参数)如果函数定义的时候指定了形参,那么在调用的时候也必须传递实参
- 定义一个函数 可以用来求任意两个数的和
def s():
print(1 + 1)
s()
def fn2(a,b):
相当于 # a = None
# b = None
print(a '+' b '=' a + b)
fn2(1,2)# 1,2为实参,由用户决定 结果:1 + 2 = 3
函数的传递
- 定义形参的时候,可以为形参指定默认值
- 指定了默认值以后,如果用户传递了参数则默认值没有任何作用
- 如果用户没有传递,则默认值会生效
def fn(a,b,c = 20):
fn(1,2,3) #结果 1,2,3
fn(1,2) #结果 1 2 20
函数的传递方式
- 1、位置传参
位置传参就是讲对应位置上的实参赋值给对应位置上的形参
fn(1,2,3)
- 2、关键字传参
关键字传参可以不按照形参定义的顺序去传递,可以直接根据参数名去传递
注意:位置传参和关键字传参可以混用的,但是关键字参数不能放位置参数前面。
def fn(c,a,b = 20):
print(a,b,c)
fn(c= 2,a = 10,b = 40)
# 结果:10 40 2
def fn(c,a,b = 20):
print(a,b,c)
fn(b = 2,a = 10,40)
# 结果:10 40 2
def fn(c = 1,a = 3,b = 20):
print(a,b,c)
fn(c= 2,a = 10,b = 40)
# 结果:10 40 2