第八节课

深拷贝和浅拷贝

一 、copy()是对数据进行浅拷贝
二、deepcopy()是对数据进行深拷贝

#copy
#dict1 = {
    
    
   # "a":1,
  #  "b":2
#}
#dict2 ={
    
    
 #   "a":1,
 #   "b":2
#}
#print(id(dict1),id(dict2))#当对象属于不可变类型时id不会改变,
#a = 'ab'
#b = 'ab'
#print(id(a),id(b))
#方法一、
#dict2 = dict1.copy()#浅拷贝除了id不同其他都相同。
#print(id(dict2), id(dict1))
#方法二、
import copy
#dict2 = copy.copy(dict1)
#print(id(dict1), id(dict2))
#浅拷贝:在可变类型中嵌套一个可变类型的时候浅拷贝无法拷贝到深层,。
dict1 = {
    
    
    'a': 1,
    'b': [1, 2, 3]
}
#dict2 = copy.copy(dict1)
#print(id(dict1), id(dict2))
#dict1['b'][0] = 10#改变一个两个都改变
#print(id(dict1['b']))
#print(id(dict2['b']))
#深拷贝
dict2 = copy.deepcopy(dict1)
print(id(dict1), id(dict2))
#dict1['b'][0] = 10#改变一个,另一个不变
print(id(dict1['b']))
print(id(dict2['b']))
#应用场景:当你想对数据进行修改的时侯,又不想修改原来的数据,这个时候就需要浅拷贝或者深拷贝

字典的遍历

一、yeys()该方法返回字典中所有的kye
二、values()该方法返回.一个序列,序列中保存有字典的值
三、items()该方法会返回字典中所有的项它返回一个序列,序列中包含双值子序列双值分别是字典中的kye和value.

#遍历字典
dict1 = {
    
    'name': 'jie', 'age': 20, 'love': 'basketball'}
#keys()该方法返回字典中所有的kye
print(dict1.keys())
#values()该方法返回.一个序列,序列中保存有字典的值
print(dict1.values())
#items()该方法会返回字典中所有的项它返回一个序列,序列中包含双值子序列双值分别是字典中的kye和value.
print(dict1.items())
for k, v in dict1.items():
    print(k, '=', v)

集合的简介和使用

一、集合的不写set和列表非常相似
二、不同点
1、集合只能存储不可变对象
2、集合储蓄的对象是无序的无法进行索引
3、集合不能出现重复对象(去重效果)
三、集合使用{}来创建

#集合只能存储不可变对象
#集合储蓄的对象是无序的无法进行索引
#集合中不能出现重复元素
#str表示集合{}
#str1 = {[1,2,3,4]}
#print(str1)#会报错因为集合只能存储不可变对象
#str2 = {1,2,3,4,5,6}
#print(str2[0])#无法进行索引因为集合储蓄的对象是无序的
#str3 = {1,2,2,4,5,7,8,8,9,7,6,5}
#print(str3)#输出为{1,2,4,5,6,7,8,9,}因为集合中不能出现重复元素(去重效果)
#根据集合的特点可以做出去重的操作
set1 = {
    
    }#这个是创建空字典不是空集合
set2 = set()#这个才是创建空集合
tuple = ()#创建空元组没有什么意义因为元组是不可变类型
print(type(tuple))
#强制转换集合的应用场景去重
list1 =[1,1,2,2,3,3,4,4,5,6]
set3 = set(list1)
print(set3)

集合的使用

一、可以通过str()来将序列和字典转换成集合。
二、len()可以使用len()来获取集合中的元素数量
三、add()向集合中添加元素
四、update()将一个集合中的元素添加到另一个集合中
五、pop()删除集合中任意一个元素一般是删除最后一个元素
六、remove()删除集合中的指定元素
七、clear()清空集合

#len()可以使用len()来获取集合中的元素数量
set1 = {
    
    1,2,3,4,5,6,7,8,9,}
print(len(set1))
#add()向集合中添加元素
set1.add(10)
print(set1)
#update()将一个集合中的元素添加到另一个集合中
set2 = {
    
    'ab','cd','ef'}
set1.update(set2)
print(set1)
#pop()删除集合中任意一个元素一般是删除最后一个元素
set1.pop()
print(set1)
#remove()删除集合中的指定元素
set1.remove(2)
#clear()清空集合
set1.clear()

集合的运算

一、&交集运算
二、|并集运算
三、-差集运算
四、^异或集
五、<=检查一个集合是否是另一个集合的子集
六、<检查一个集合是否是另一个集合的真子集
七、>=检查一个集合是否是另一个集合的超集
八、>检查一个集合是否是另一个集合的真超集

#&交集运算
set1 = {
    
    1,2,3,4,5,}
set2 = {
    
    4,5,6,7,8,9}
set3 = set1&set2
print(set3)#输出{4,5}
#|并集运算
set4 = set1|set2
print(set4)#去掉了重复元素输出{1,2,3,4,5,6,7,8,9}
#-差集运算
set5 = set1-set2
print(set5)#输出为{1,2,3}
#^异或集
set6 = set1^set2
print(set6)#输出为{1,2,3,6,7,8,9}
#<=检查一个集合是否是另一个集合的子集
set7 = set1<=set2
print(set7)#输出为False
#<检查一个集合是否是另一个集合的真子集
set8 = set1<set2
print(set8)#输出为False
#>=检查一个集合是否是另一个集合的超集
set9 = set1>=set2
print(set9)#输出为False
#>检查一个集合是否是另一个集合的真超集
set10 = set1>set2
print(set10)#输出为False

可变类型和不可变数据类型

一、可变类型:列表,字典,集合 值改变了,id不变
二、不可变类型:字符串,元组 值改变了,id就改变了

函数的简介

一、函数也是一个对象
二、函数用来保存一些可执行的代码,并且在需要时可以对这些语句进行多次调用。
三、注意:函数必须符合标识符的规范(可以包含数字,字母,下划线,但是不能以数字开头。
四、print是函数对象print()调用函数。

#自定义函数
def jis():
    print('这是我的第一个函数')#括号里是参数,实际参数
#函数对象 jis  调用函数()
jis()

函数的参数以及参数的传递方式

#自定义函数的参数
def jis(a, b):#这个参数叫做形参,也叫做形式上的参数。
    print(a*b)
jis(100, 100)#实参   实际参数 当你要调用的时候传递实际参数。
#def ful(a,b,c=o):#c=0给形参指定默认值,当没有传递实参时使用默认值,当有传递实参是使用传递进来的参数
#    print(a)
 #   print(b)
  #  print(c)
#函数的传递方式
#一、位置传参:一一对应的传参方式,要按实参的排列顺序来写。
#二、关键字传参:使用形参这个关键字来进行赋值传参,顺序可以打乱。
def ful(a,b,c=o):
    print(a)
    print(b)
    print(c)
ful(a=2,b=3,c=5)
#位置传参和关键字传参混合使用,位置传参必须在关键字传参的前面

参数的类型

#def lll():
 #   pass
#def leo(a):
  #  print(a)
#b=1
#b=[1,2,3,4]
#b={'a':6}
#b='asd'
#b=lll
#leo(b)
#实参不管是什么类型的对象都可以
def lll(a):
   # a = 10#输出结果为10,1这个a已经不是原来的那个a了所以b不会变化
   a[0] = 10#输出的结果a和b一样因为这个是在原来a的基础上修改的所以获得a=b[10,2,3]
   print(a)
c = 1
c = [1,2,3]
lll(c)
print(c)

课后作业

一、打印名片程序: 输入姓名,电话号码,性别,最后打印出来名片
控制姓名长度 6-20个字符
电话号码长度11
性别只能允许输入男或女
每一样信息不允许为空

def xm():
    while True:
     name = input('请输入姓名')
     if 6 <= len(name) <= 20:
        break
     else:
         print('输入错误')
         continue
def dh():
    while True:
        dhhm = input('请输入电话号码')
        if len(dhhm) == 11:
            break
        else:
            print('输入错误')
            continue
def xb():
    while True:
        xb1 = input('请输入您的性别')
        if xb1 == '男' or xb1 == '女':
            break
        else:
            print('不能为空')
        continue
def mp():
    mp1 = {
    
    
         xm(): '请输入您的姓名',
         dh(): '请输入您的电话号码',
         xb(): '请输入您的性别'
}
    print(mp1)
mp()

二、使用函数求前 20 个斐波那契数列: 1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和

def bft(a) 
i = 0
list = [1,1]
while i<a-2:
list.append(list[i]+list[i+1])
i+=1
for i in list:
print(i)
bft(20)

三、编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果。

def fun():
    i = 0
    result = 0
    while i<=100:
        result += i
        i += 2
        print(result)
fun()

猜你喜欢

转载自blog.csdn.net/weixin_55924597/article/details/114994959
今日推荐