八 元组

本文介绍了Python中的元组和字典。元组是一个不可变序列,适合用于不变的数据,创建和解包方式也进行了说明。接着讨论了可变对象的概念,区分了可变与不可变类型。在字典部分,讲解了字典作为映射数据结构的特点,如何通过键快速查询值,以及字典的创建、使用、修改和删除操作。最后提到了浅复制在字典中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

八 元组

1 元组

▶ 元组tuple:是一个不可变序列
▶ 什么时候用列表?什么时候用元组。
● 一般情况下希望数据不改变,就用元组,其余情况都用列表。
▶ 创建元组:用()来创建元组

my_tuple=(1,2,3,4,5)
print(my_tuple,type(my_tuple))
#元组里面至少得有一个逗号
#当元组不是空元组时,括号可以省略
 

 my_tuple=1,2,3,4,5
 print(my_tuple,type(my_tuple))

▶ 元组的解包:解包就是指将元组当中的每一个元素都赋值给变量。
1.

    my_tuple=1,2,3,4,5
    a,b,c,d,e=my_tuple
    print('a'=',a)
    print('b'=',b) 
    print('c'=',c)
    print('d'=',d)
    print('e'=',e)
    输出:a=1 b=2 c=3 d=4 e=5
  my_tuple=1,2,3,4,5
  a,b,*c=my_tuple
  print('a'=',a)
  print('b'=',b) 
  print('c'=',c)
  输出:a=1 b=2 c=3 4 5
  • 在元组解包时,变量的数量必须和元组中元素要一一对应
  • 如果出现变量和元素没有相对等的情况下,我们可以在变量前面加*
  • 这样变量就会将获取的元素中所有剩余的元素以列表形式返回
  • *可以加在变量前面,中部,或者结尾

2 可变对象

▶ Python中,数值类型(int和float),字符串str,元组tuple都是不可变类型,而列表list,字典dict,集合set是可变型
▶ 可变对象指的就是我们可以对对象里面的value进行改变

   a=[1,2,3]
   a[0]=10(改对象)
#这个操作是通过变量去修改对象的值
#这种操作不会改变变量所指向的对象
   
   a=[4,5,6](改变量)
#这个操作在给变量重新赋值
#这种操作会改变变量所指向的对象
#可变对象中保存了三个数据
1.id(标识)   2.type(类型)   3.value(值)

3.字典简介

3.1 字典的基本介绍

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

  d={'name':'葫芦娃','age':7,'gender':'男'}
  #{key-value,key-value......}
   print(d)
  #输出:{'name':'葫芦娃','age':7,'gender':'男'}

▶ 字典键是不能重复的,如果出现重复后面的会替换前面的

  d={'name':'葫芦娃','age':7,'gender':'男','name':'蜘蛛侠'}
  #{key-value,key-value......}
   print(d)
  #输出;{'name':'蜘蛛侠','age':7,'gender':'男'}
   
  #获取值需要根据键来获取
   d={'name':'葫芦娃','age':7,'gender':'男'}
   printa(d['name'])
  #输出:葫芦娃

3.2 字典的使用

▶ 可以通过dict()函数来创建字典

 dict(name='葫芦娃',age=7,gender='男')

▶ 双值序列:序列中只有两个值,(‘x’,1),‘ab’,[5,6]
▶ 子序列:如果序列中元素也是序列,那么我们就称这个元素为子序列[(4,5),(6,7)]

  d=dict([('name','葫芦娃'),('age',7)])
  print(d,type(d))

▶ len()函数可以获取字典中键值对的个数
▶ in 检查字典中是否包含指定的键
▶ not in检查字典中是否不包含指定的键

  d=dict([('name','葫芦娃'),('age',7)])
  print('name' in d)

▶ 获取字典中的值 根据键(key)来获取
语法 dict[key]

   dict(name='葫芦娃',age=7,gender='男')
   n='name'
   print(d[n])
   print(d['n'])     #keyError: 'n'

▶ et(key[,default]),该方法可以根据字典中的key来获取值,如果获取字典中的键不存在,就会返回None,也可以指定一个默认值来作为第二个参数,这样获取不到值的时候会返回默认值。

      dict(name='葫芦娃',age=7,gender='`男')
      print(d.get['python','该值不存在'])

▶ 修改字典 dict[key]=value

     dict(name='葫芦娃',age=7,gender='`男')
     
     d['name']='钢铁侠'     #修改字典的key-value
     
     d['phone']='15363347891'   #向字典中添加key-value

▶ dict.setdefault(key[,default]),字典中添加key-value
▶ 如果key已经存在到字典当中,则返回key的值,不会对字典做任何操作
▶ 如果key不存在,则向字典中添加这个key,并设置value

   d.setdefault('name','美国队长')
   r=d.setdefault('python','美国队长')
   print(r)
   print(d)

▶ update()将其它字典中的key-value添加到当前字典当中,如果有重复的key,则后面的会替换到当前的

   d={'a':1,'b':2,'c':3}
   d2={'d':4,'e':5,'f':6,'a':7}
   d.update(d2)
   print(d)
 # 输出:{'a':7,'b':2,'c':3,'d':4,'e':5,'f':6}

▶ 删除 del 来删除key-value

   d={'a':1,'b':2,'c':3}
   del d['a']
   del d['b']

▶ popitem()一般会删除最后一个,删除之后它会将key-value作为返回值返回,返回的是一个元组,元组中有2个元素,第一个元素是key,第二个元素是value

  d={'a':1,'b':2,'c':3}
  d.popitem()
  r=d.popitem()

▶ pop(key[,default]) 删除key字典中的key-value,会将删除的值返回

 r=d.pop('d')
 r=d.pop('w','没有这个key值'')
 print(r)
 print(d)

▶ 浅复制:复制后的对象和原对象是独立,修改一个不会影响另一个

  d={'a':1,'b':2,'c':3}
 d2=d
 d['d']=50    #给字典添加key-value
 d2=d.copy()
 d['a']=30
 print('d=',d,id(d))
 print('d2',d.id(d2))

▶ 浅复制只会复制字典本身,如果字典中还有字典是不会被复制的

 d={'a':{'name':'葫芦娃','age':7},'b':2,'c':3}
 d2=d.copy()
 d2['a']['name']=黑猫警长'
 print('d=',d,id(d))
 print('d2',d.id(d2))

▶ 遍历字典:

1.keys()该方法返回的是字典所有的key
    d={'name':'葫芦娃','age':7,'gender':'男'}
    #print(d.keys())
    for k in d.keys():
    print(d.[k])

2. values()返回一个序列,该序列中保存有字典的值
     for v in d.values():
     print(v)

3.items()返回字典所有的项,它返回的是一个序列,序列包含的是双值子序列
     #print(d.items())
     for k,v in d.item():
     print(k,v)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值