day04学习 Python列表

Python列表详解与操作实践
本文详细介绍了Python中的列表,包括其可变性、有序性及常用操作,如增删改查。通过实例展示了列表的创建、下标访问、切片、循环遍历等,并探讨了列表的排序方法。此外,还提供了多个练习题供读者实践。

列表

  • 列表是能够储存各种数据的容器

  • 列表是可变的(支持增、删、改操作)

  • 列表是有序的(支持下标操作)

  • 列表的容器符号[]list

下标

每个元素在列表中的位置

  • 正向下标,从0开始

  • 负向下标,从-1开始

  • 下标不能越界

    list1 = ['蜘蛛侠', '环太平洋', '海王', '复仇者联盟']
    # 正向下标,从0开始
    # 负向下标,从-1开始
    
    # 海王
    print(list1[2], list1[-2])
    
    list1[100]    # IndexError: list index out of range
    

列表

  • 创建一个空列表
    list1 = []

  • 可变 - 增、删、改

    • 增加元素:

      append(元素): 追加

      insert(下标, 元素): 插入

      list1.append('Python')
      list1.append('Java')
      
      list1.insert(1, 'HTML')
      list1.insert(1, 0)
      print(list1)
      
    • 修改:通过下标改元素

      语法:语法:列表[下标] = 新的值

      list1[1] = 'C'
      print(list1)
      
    • 删除元素

      • del: 语法 - del 列表[下标]

      • remove: 语法 - 列表.remove(元素)

        移除某个元素(彻底删除,找不到记录了)

      • pop: 移除某个元素(删除文件后知道删除的是谁,类似电脑放入回收站)

        • 语法 - 列表.pop() - 取出列表最后一个元素并且返回(在内存中还存在,delremove在内存中不存在了)
        • 列表.pop(下标) - 取出列表中指定下标对应的元素并且返回移除某个元素
      • clear: 将列表清空

        del list1[1]
        print(list1)
        print(list1.remove('Java')) # 删掉的元素无了
        print(list1)
        print(list1.pop(0)) # 删掉的元素能得到
        print(list1)
        list1.clear()
        print(list1)
        
  • 切片

    • 左闭右开区间,从原来的容器中提取元素组成新的容器。

    • 切片可以越界。

      list1 = ['蜘蛛侠', '环太平洋', '海王', '复仇者联盟']
      print(list1[2:4])
      
    • 变量[M: N: step]

      • M:起始范围(默认从头开始取)
      • N结束范围(默认取到尾部)
      • step步长(默认值为1)
      print(list1[1:3])
      print(list1[1:4:2])
      print(list1[:4:2])
      print(list1[::2])
      print(list1[:])
      

      a. 起始范围和结束范围不写的时候,冒号必须存在;步长不写时,冒号不用写。

      b. 步长控制获取的元素,每间隔步长-1个元素获取一个元素(获取的当前元素+步长=下一个要获取的元素)

      print(list1[::-1])
      print(list1[4:1:-1])
      

      c. M和N必须同符号:step>0, M<N; step<0, M>N

      print(list1[0:-1])
      

      d. 正向下标和负向下标可以组合使用

      movies = ['阿甘正传', '肖申克的救赎', '霸王别姬', '三傻大闹宝莱坞', '环太平洋', '猿人泰山']
      

    练习

    # a.获取['阿甘正传'、'霸王别姬'、'环太平洋']
    print(movies[::2])
    # b.获取['肖申克的救赎'、'环太平洋']
    print(movies[1::3])
    # c.获取['环太平洋'、'霸王别姬'、'阿甘正传']
    print(movies[-2::-2])
    # d.获取['猿人泰山'、'阿甘正传']
    print(movies[::-5])
    # e. 获取['霸王别姬']
    print(movies[2:3])
    a = []
    a.append(movies[2])
    print(a)
    b = [movies[2]]
    print(b)
    
  • 循环(遍历)

    • 直接遍历
    movies = ['阿甘正传', '肖申克的救赎', '霸王别姬', '三傻大闹宝莱坞', '环太平洋', '猿人泰山']
    for i in movies:
        print(i)
    
    • 间接遍历

      len()能够查看容器的长度

      print(len(movies))
      for i in range(len(movies)):
          print(movies[i])
      
    • enumerate(): 将列表转换为一个可迭代对象(能进行遍历)

      print(enumerate(movies))
      for i in enumerate(movies):
          print(i)
      

    练习:将下方列表中的元素从小到大排序。

    list1 = [23, 56, 10, 55, 76, 100, 30]
    list2 = []
    while list1 != []:
        a = list1.pop(0)
        for j in list1:
            if a > j:
                list1.append(a)
                break
        else:
            list2.append(a)
    print(list2)
    
    # 讲解
    # 冒泡排序 https://www.runoob.com/w3cnote/ten-sorting-algorithm.html
    
    # 每趟排序,排序次数 + 1 = 本趟排序的元素个数
    # 外层循环控制趟数
    for i in range(1, len(list1)):
        print(f'这是第{i}躺排序')
        print('每趟排序开始前:', list1)
        for j in range(0, len(list1) - i):
            print('每次排序的两个元素',  list1[j], list1[j + 1])
            if list1[j] > list1[j + 1]:
                list1[j], list1[j + 1] = list1[j + 1], list1[j]
            # 打印每一趟排序的结果
            print(list1)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值