旅途——Python:元组和字典

元组

简介:

  • 元组基本介绍
    • 元组表现形式tuple
    • 元组是一个不可变序列(一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表)
    • 使用()创建元素
    • 元组不是空元组至少有一个 逗号(,) 当元组不是空元组时括号可以省略
    • 元组解包指将元组当中的每一个元素都赋值给一个变量

元组的基本操作:

  • ()创建元组:
my_tuple = ()#创建一个空元组
my_tuple = (12345)#创建一个元组
my_tuple = 10,2030#相当于 my_tuple =(10,20,30)元组非空可以省略()

注意:
1、元组和列表操作差不多,用索引来查看元素
2、 但是元组不可以改变值
3、 元组不为空,则至少要一个(,)逗号

  • 元组的解包:
my_tuple = 10,2030,40
a,b,c,d =my_tuple #把元组里面的值赋值给变量,变量个数必须等于元素个数
print('a=' ,a)
print('b=' ,b)
print('c=' ,c)
print('d=' ,d)
  • 当只需要部分数据时,不想要那么多的变量:
my_tuple = 10,2030,40
a,b,*c =my_tuple # *c 获取元组剩余的元素,c是一个列表
print('a=' ,a)
print('b=' ,b)
print(*c)
print(c)

a,*b,c =my_tuple
print('a=' ,a)
print('b=' ,b)
print('c=' ,c)

*a,b,c =my_tuple
print('a=' ,a)
print('b=' ,b)
print('c=' ,c)

注意:这种操作列表、字符串 也可以

可变对象

  • Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型
  • 可变对象中都保存了三个数据
    • id(标识)
    • type(类型)
    • value(值)
    (就是指我们可以对对象里面的value进行改变)
a = [1,2,3]
a[0]=10
a = [4,5,6]

注意:

  • 这两种操作不一样:

    第一个是改变value
    第二个是重新开辟了一个 id :新建了一个a,把原来的a覆盖了

  • 列表是一个可变对象:
    a[0]=10 #修改对象的value,不改变id
    a = [4,5,6] #修改a的值,但是改变了对象,因为id变了
    改变对象的值会影响所有指向该对象的其他变量

字典

简介:

  • 字典属于一种新的数据结构称为映射(mapping)
  • 字典的作用和列表类似,都是用来存储对象的容器
  • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
  • 在字典中每一个元素都有唯一的名字,通过这个唯一的名字可以找到指定的元素
  • 这个唯一的名字我们称之为key 通过key可以快速查询value 也可以称之为值
  • 字典我们也称之为键值对(key-value)结构
  • 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
  • 创建一个有数据的字典 语法 {key:value}
  • 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)
  • 字典的键是不能重复的,如果出现重复的后面的会替换前面的

基本操作:

  • 创建一个字典:字典的值可以是任意对象

  • 注意:字典的key可以是任意不可变对象,切不可以重复,要不然后面的会替换前面的

# d = {key:value,......}
d = {'name':'spademan','age':7}

d = {
'name':'spademan',
'age':7
}

print(d['name']['age']) #查看对应键的值

-通过dict()创建函数

#通过dict()创建函数
d = dict('name':'spademan','age':7)
d = dict([('name','spademan'),('age',7)])# 如果序列中的元素也是序列,我们就称这个元素为子序列, 双值子序列
  • len():获得键值对个数
  • in not in :判断字典中是否包含指定的键
  • 获取字典的值:dict[‘key’]
    注意:有一种特殊情况:
    n = ‘key’
    dict[n] #这样子通过变量查询
  • get(key[ , default])该方法可以根据字典的key来获取值
    如果键不存在,就会返回none
    字典名.get(‘key’) #也可以获得值

修改字典:

  • d[key]= value
  • d[‘原字典没有的key’] = value #添加一个新的K-V对
  • d.setdefault(key[ , default])字典中添加新的K-V对
d.setdefault('name','Tom')
#如果key已经存在在字典当中,则返回key的值,不会对字典进行操作
#如果不存在,则向字典添加这个key,并设置value
  • update():
d.update(新字典):把d的K-V添加到新字典中,重复的key会覆盖
  • del删除k-v
del d['key']
  • popitem():随机删除
    d.popitem():一般删除最后一个,并且将删除的K-V作为返回值,返回元组
  • pop(),会将删除的值返回
    d.pop(key[ , default]):根据key删除字典中的value
  • copy():复制的两个互相不影响
  • 浅复制:只会复制字典的本身,双层字典是不会被复制的,
d = {'a':1,'b':2,'c':3}
d2=d #创建d的一个副本,不是复制,因为两个变量指向同一个对象
d['b']=50 #那么d2 d都是50了

d2 = d.copy() # 此时d2,d的id不一样了,说明二者没什么关系了,此时改变d,不会影响d2
-----------------------------------------------------------

d = {'a':{'name':'Tom','age':20},'b':2,'c':3}
d2 = d.copy()
d2['a']['name'] = 'Jerry' # 此时两个都变了
#浅复制,只会复制字典本身,如果字典里还有字典,那么这个字典是不会被复制的

遍历字典:

1 keys() 返回字典所有的key
2 values() 返回一个序列,保存字典的值
3 items() 返回字典所有的项 ,返回双值子序列(key,value)

d = {'name':'spademan','age':7}

print(d.keys())
for k in d.keys():
	print(d[key])

print(d.values())
for V in d.values():
	print(V)

print(d.items())
for K,V in d.items():
	print(K,V)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值