07我的Python学习之路--列表方法元组和字典

1. 列表的方法

  • 1.1 append() 无返回值

    • 功能:向列表的最后添加一个元素
    • 示例:
      hero = ['钢铁侠','绿巨人','蜘蛛侠']
      print('修改前:',hero)
      # 通过切片方式向列表添加元素
      hero[3:3] = 'A'     # 尾加
      hero[2:2] = 'C'     # 在索引位置加
      hero[9:9] = 'B'     # 若指定的索引值大于列表长度,元素将添加到列表尾部
      
      hero.append('黑珍珠')      # append方法
      print('修改后:',hero)
      
    • 运行结果:
      在这里插入图片描述
  • 1.2 insert(self, index, p_object) 无返回值

    • 功能:向列表指定位置插入一个元素
      • 参数1:要插入的位置
      • 参数2:需要传递一个序列(如果index大于列表长度则将元素添加到尾部)
    • 示例:
      hero = ['钢铁侠','绿巨人','蜘蛛侠']
      print('修改前:',hero)
      #  insert  
      hero.insert(2,'我来了')
      print('修改后:',hero)
      
    • 运行结果:
      在这里插入图片描述
  • 1.3 extend()

    • 功能:使用一个新的序列来扩展当前序列,参数需要传递一个序列,但与列表相加不同的是,extend方法可以添加不同类型的元素
    • 示例:
      在这里插入图片描述
      在这里插入图片描述
      hero += [‘黑寡妇’,‘超人’]
  • 1.4 pop()

    • 功能:根据索引删除并返回指定元素 (默认删除最后一个元素)
    • 示例:
      在这里插入图片描述在这里插入图片描述
  • 1.5 remove()

    • 功能:根据值删除指定元素(如果相同值的元素有多个,只会删除第一个)
    • 示例:
      在这里插入图片描述
  • 1.6 clear()

    • 功能:清空列表中的所有元素
    • 示例:
      hero = ['钢铁侠','绿巨人','蜘蛛侠']
      print('修改前:',hero)
      hero.clear()
      print('修改后:',hero)
      
    • 运行结果:
      在这里插入图片描述
  • 1.7 reverse()

    • 功能:翻转列表
    • 示例: 在这里插入图片描述
  • 1.8 sort(key = None,reverse = True)

    • 功能:用来对列表中的元素进行排序 True 反序,False 正序
    • 示例:
      在这里插入图片描述

2.遍历列表 for

  • 2.1 语法:
    在这里插入图片描述
  • 2.2 注意:for 循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量
  • 2.3 range(start,stop[,step]) 生成一个自然数序列
    • 参数说明

      • start:起始数字。默认从0开始。例如 range(5) 等价于range(0,5)
      • stop:结束数字,但不包括stop。例如: range(0,5) 是[0,1,2,3,4] 没有5
      • step:步长,默认为1.例如:range(0,5)等价于range(0,5,1)
    • 示例:

      hero = ['钢铁侠','绿巨人','蜘蛛侠']
      for i in hero:
          print(i)
      
    • 运行结果:
      在这里插入图片描述

      for i in range(5):
          print(i, end=' ')
      

      在这里插入图片描述

3. 元组

  • 3.1 元组 tuple
    • 语法:元组名字= (元素,…)

    • 示例:

      mytuple = (1,2,3,4,5)
      print(mytuple, type(mytuple))
      
    • 运行结果:
      运行结果

  • 3.2 元组是一个不可变序列。一般当我们希望数据不改变时,我们使用元组,其他情况下基本都使用列表
  • 3.3 元组不是空元组至少有一个逗号(,) 当元组不是空元组时括号可以省略
    • 示例:
      mytuple=()				# 空元组
      print(mytuple, type(mytuple))
      mytuple = ('a')			# 字符串
      print(mytuple, type(mytuple))
      mytuple = ('a',)		# 只要有一个逗号就是元组
      print(mytuple, type(mytuple))
      mytuple = ('a','b','c')	# 标准写法
      print(mytuple, type(mytuple))
      mytuple = 'e','f','g'	
      print(mytuple,type(mytuple))
      
    • 运行结果:
      在这里插入图片描述
  • 3.4 元组的解包 * 指元组当中的每一个元素都赋值给一个变量。
    • 示例:

      my_tuple = '我','喜','欢','用','Python'
      a,b,c,d,e = my_tuple  
      print(a,b,c,d,e)
      a,b = my_tuple  # 参数太少,报错
      print(a,b)
      
    • 运行结果:
      在这里插入图片描述

  • 3.5 * 号将元组中多余的数据都保存到带* 的变量中,数据类型为列表
    • 示例:
      my_tuple = '我','喜','欢','用','Python'
      a,b,*c = my_tuple
      print(a,b,c)
      
    • 运行结果:
      在这里插入图片描述

4. 字典

  • 4.1 概念
    • 字典属于一种新的数据结构称为映射(mapping)
    • 字典的作用和列表类似,都是用来存储对象的容器
    • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
    • 字典中每一个元素都有唯一的名字(key),通过这个唯一的名字可以找到指定的元素(value),反之则行不通。
    • 字典 dict : key-value结构
    • 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item),
    • 创建一个有数据的字典 语法{key:value}
    • 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple....)
    • 字典的键是不能重复的,如果出现重复的后面的会替换前面的。这由字典key的唯一性决定
  • 4.2 字典的创建用{}
    • 示例:
      d = {1:'宋江', 2:'卢俊义',3:'林冲',4:'吴用',5:'李逵',6:'武松',7:'孙二娘'}
      print(d)
      print(type(d))
      
    • 运行结果:
      在这里插入图片描述
      print(d[1],d[2],d[5])    # key值不存在时d[-1] 报错
      
    • 运行结果:
      在这里插入图片描述
  • 4.3 字典的使用
    • dict() 创建字典 关键字参数不能重复

      • 示例:搞清楚使用{} 和使用dict() 创建字典的区别
      d = {1:'宋江', 2:'卢俊义',3:'林冲',4:'吴用',5:'李逵',6:'武松',1:'孙二娘'}
      print(d,type(d))
      
      • 运行结果:
        在这里插入图片描述
        在这里插入图片描述
        d = dict(name='葫芦娃',age=7,gender='男')
        print(d,type(d))
        
      • 运行结果:
        在这里插入图片描述
        d = dict(name='葫芦娃',age=7,gender='男',name='葫芦娃')
        print(d,type(d))
        
      • 运行结果:
        在这里插入图片描述
      • 总结:使用dict() 比{} 创建字典有更高的要求,dict() 中关键字重名会报错,而{} 会替换原来的值。
    • 双值子序列的序列转换为字典

      • 双值序列,序列当中有2个值[4,5],(1,2),‘ab’
      • 子序列,如果序列当中的元素也是序列,我们就称这个元素为子序列[(1,2,4),[4,5]]
      • 示例:
        d = dict([('name','葫芦娃'),('age',7)])
        print(d,type(d))
        
      • 运行结果:
        在这里插入图片描述
    • get(key[,default]) 根据键key来获取字典的值。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值 (不指定第二个参数是返回None)

      • 示例:
        print(d.get('name'))
        print(d.get('sex'))
        print(d.get('sex','男'))
        
      • 运行结果:
        在这里插入图片描述
    • 修改字典的value

      • 示例1:
        d = {1:'宋江', 2:'卢俊义',3:'林冲',4:'吴用',5:'李逵',6:'武松'}
        print(d,type(d))
        d[1] = '齐天大圣'
        d[8] = '花和尚'
        print(d,type(d))
        
      • 运行结果: 在这里插入图片描述
    • setdefault 注意与dict[key] 修改的区别

      • 示例:
        d = {1:'宋江', 2:'卢俊义',3:'林冲',4:'吴用',5:'李逵',6:'武松'}
        print(d,type(d))
        d.setdefault(1,'晁盖')
        d.setdefault(8,'花和尚')
        print(d,type(d))
        
      • 运行结果: 在这里插入图片描述
    • len() :取得字典中键值对个数

      print(d,type(d))
      print(len(d))
      
      • 运行结果:
        在这里插入图片描述
    • in 或 not in : 检查字典中是否包含(或包含)有指定的键

      • 示例:

        print('name' in d)
        print('sex' not in d)
        
      • 运行结果:
        在这里插入图片描述

  • update() 将其他字典的key-value添加到当前的字典当中
    • 示例:
      d = {1:'a',2:'b',3:'c'}
      d1 = {5:'d',6:'e',7:'f'}
      d.update(d1)
      print(d,type(d))
      
    • 运行结果:
      在这里插入图片描述
  • del 删除字典中的key-value
    • 示例:
      print(d)
      del d[1]
      del d[7]
      print(d)
      
    • 运行结果:
      在这里插入图片描述
  • popitem()
    • 功能:
      • 随机删除字典中的一个k-v,一般都会删除最后一个
      • 删除之后会将删除的k-v作为返回值返回
      • 返回值为元组类型 (key,value)
      • 示例:
        print(d)
        r = d.popitem()
        print(d, r)
        
      • 运行结果:
        在这里插入图片描述
  • clear() :清空字典中的所有元素
  • pop(key[,default])
    • 功能:根据key删除指定的value。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值。 注意必须传参,否则报错
    • 示例:
      在这里插入图片描述

5. 浅复制 -----copy()

  • copy() 方法用来对字典进行浅复制
    • 示例1:普通赋值
      d = {1:'宋江', 2:'卢俊义',3:'林冲',4:'吴用'}
      print(d,id(d))
      d1 = d
      d1[1] = '晁盖'
      print(d,id(d))
      print(d1,id(d1))
      
    • 运行结果:
      在这里插入图片描述
  • 结论:直接赋值并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,当被复制的对象数据改变后,原对象的数据也改变。
    • 示例2:copy() 浅copy
      d = {1:'宋江', 2:{5:'卢俊义'},3:'林冲',4:'吴用'}
      print('修改前d:',d,id(d))
      d1 = d.copy()
      print('修改前d1',d1,id(d1))
      d1[2][5] = '晁盖'
      d1[3] = '花和尚'
      print('修改后d',d,id(d))
      print('修改后d1',d1,id(d1))
      
      print('d:',id(d[2]))
      print('d1:',id(d1[2]))
      
    • 运行结果:
      在这里插入图片描述
  • 结论:
    • 当浅复制的值是不可变对象(数值,字符串,元组)时,和“等于赋值”的情况一样,对象的id值与浅复制原来的值相同。
    • 当浅复制的值是可变对象(列表和元组)时会产生一个“不是那么独立的对象”存在。有两种情况:
      • 1.复制的 对象中无复杂子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
      • 2.复制的对象中有复杂子对象 (例如本例中),如果不改变其中复杂子对象,浅复制的值改变并不会影响原来的值。 但是改变原来的值中的复杂子对象的值会影响浅复制的值。
    • 示例3:
      import copy		# deepcopy
      d = {1:'宋江', 2:{5:'卢俊义'},3:'林冲',4:'吴用'}
      print('修改前d:',d,id(d))
      d1 = copy.deepcopy(d)
      print('修改前d1',d1,id(d1))
      d1[2][5] = '晁盖'
      print('修改后d',d,id(d))
      print('修改后d1',d1,id(d1))
      print('d:',id(d[2]))
      print('d1:',id(d1[2]))
      
    • 运行结果:
      在这里插入图片描述结论:被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值