Python 核心编程基础第7天

核心编程基础第7天

1. 元组

# coding=utf-8  python 中对象有类型,变量无类型
#todo 元组 (tuple)
'''
1.元组是一个不可变序列,用于数据不希望被修改的时候
2.通过索引查找 value  [索引]
3.元组使用()来表示的
4.如果元组不是空元组,那么它里面至少有一个 逗号
'''
tuple1=(1,2,3,4,5)
print(type(tuple1))
print(tuple1[1])
#如果元组不是空元组,那么它里面至少有一个 逗号
#tuple2 = 20,
tuple2=(10)# int 至少有一个逗号
tuple2 =(10,)#tuple
print(type(tuple2))

#todo 元组的拆包
'''
1.拆包就是进行分别赋值 
2.变量个数必须和元素个数相等,否则报错

'''
tuple3 = (1,2,3,4,5,6)
a,b,c,d,e,f=tuple3
#a,v,z=tuple3#ValueError: too many values to unpack (expected 3)
#a,v,z,a,b,c,d,e,f=tuple3#ValueError: not enough values to unpack (expected 9, got 6)

a,b,*c=tuple3# * 剩余没有匹配的元素以列表的形式赋值个加*号的变量
a,*b,c=tuple3# b是一个 list
print(a,b,c)
print(type(c))

#字符串的拆包
str1='abcedf'
a,b,c,*g=str1
print(a,b,c,g)
print(type(str1))#str
print(type(a))#str
print(type(g))#list


2. 字典

# coding=utf-8 Python 中对象有类型,变量无类型
#todo 字典 dict 键-值  (名称:数据)  {}来表示
'''
1.dict1={} 空字典
2.数据类型 {key:value}  这么一个key:value称它为一项 或者一个键值对
'''
#创建字典方式1 最常用
dict1 = {"name":"郭靖",'age':30,'gender':'男'}
dict2 = dict(name='郭靖',age=30,gender='男')
print(dict1)
print(dict2)
print(len(dict1))#项的个数 或者是字典 键值对的个数
#字典的另外一种创建方式2 不怎么用
#dict2 = dict(name='郭靖',age=30,gender='男',name='黄蓉')
dict2 = {
    "name":"郭靖",
    'age':30,
    'gender':'男',
    "name":"黄蓉"}
print(dict2)
#字典的第三种方式 有序字典用于(python 2)需要导入  collections  python3 默认是有序字典
dict3=dict([('name','郭靖'),('age',30),('gender','男')])
print("dict3",type(dict3))
#python2 中的有序字典
import collections
d1=collections.OrderedDict([('name','郭靖'),('age',30),('gender','男')])#collections.OrderedDict
print(type(d1))#collections.OrderedDict 类型 有序字典


dict4 ={
    "name": "郭靖",
    'age': 30,
    'gender': '男',
    "name": "黄蓉"
    }#此种定义方式 如果key有重复的 value 将替换前面key value的值

'''
双值子序列:d1=collections.OrderedDict([('name','郭靖'),('age',30),('gender','男')])#collections.OrderedDict
双值序列:序列中有两个值 [1,2]  'ab'  (a,b)  就是有两个值
子序列: 如果序列中的二元素也是序列['a','b'] 
#创建字典:也可以通过双值子序列创建 
dic5=dict([('name','郭靖'),('age',30),('gender','男')])
'''
dict5=dict([('name','郭靖'),('age',30),('gender','男')])
print(type(dict5))
#todo 字典的增删改查
'''
len()  函数获取字典中的键值对个数
in   not in 检验字典中是否(不)包含指定的 key 键
'''
print(len(dict5))#3
print('name' in dict5) # True
print('姓名' in dict5)#False

#可以根据键来获取字典当中的值 语法

print(dict5['name'])
#get() 通过key 获取value
print(dict5.get('name','没有找到'))#郭靖
print(dict5.get('姓名','没有找到'))#没有找到

#修改字典 语法 dict[key] = value
#如果key值不存在,则向字典中添加key-value
dict5['gongfu']='七十二变'#字典中不存在所以追加
print(dict5)
dict5['name']='杨过'#如果存在则修改
print(dict5)

# setdefault(key,default)向字典中添加key-value
#如果这个key已经存在于字典中,则返回value值,不会对字典油热合影响
#如果key不存在,则字典中添加这个key,并设置value
result =  dict5.setdefault('name','郭襄')#因为存在所返回杨过
result = dict5.setdefault('name2','小龙女')#因为不存在所有追加键值对
print(result,dict5)

#update()将其他字典当中的key-value 添加到当前字典中
d11={
    1:'1',
    2:'2'
}
dict5.update(d11)
print(dict5)
d11.update(dict4)
print(d11)

#del 关键字 删除字典中的key-value
del d11['name']
print(d11)

#popitem() 删除最后一个键值对
#他会将删除之后的键值对作为返回值返回

result=d11.popitem()
print(result)

#pop(key,defualt)  通过key 删除key-value

result = d11.pop('age','找不到') #找到则返回value否则返回找不到
print(result)

#clear() 清空字典
d11.clear()
print(d11)
print("最后一次执行")

3. 深拷贝和浅拷贝

# coding=utf-8 Python 中对象有类型,变量无类型
'''



'''
dict1 ={
    "name": "郭靖",
    'age': 30,
    'gender': '男',
    'a':{1:'a',2:'2'}
    }
# dict2=dict1.copy()#浅拷贝是一个全新的对象 没有嵌套列表所以全新拷贝
# print(id(dict1),id(dict2)) #不会影响 因为id不同
# dict1['name']='黄蓉'#
# dict1['a'][1]='3'#嵌套列表示一个指向不会完全拷贝浅拷贝
# print(dict1)
# print(dict2)

import copy
dict2=copy.deepcopy(dict1)#深贝是一个全新的对象
dict1['name']='黄蓉'#
dict1['a'][1]='3'#修改列表也会改变因为是深拷贝
print(dict1)
print(dict2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值