day06 列表(1)

本周知识点:容器:列表、字典、元组、字符串,函数(难点):函数基础

列表

列表的作用

​ 首先,我们举一个例子,比如,我们要保存一个学生的成绩

​ 我们可以这样

score = 100

​ 那么,在没有容器的情况下,我们定义一个班的学生的成绩

score1 = 100
score2 = 95
score3 = 98
score4 = 75
score5 = 86
score6 = 85
score7 = 87
score8 = 90
score9 = 89
score10 = 99
......

​ 很明显这样会使代码非常的赘余,并且及其的繁琐,所以,我们需要引入一个新的知识:列表

​ 那么下来我们用列表定义一下本班学生的成绩

scores = [89, 56, 45, 77, 99, 82, 77, 67, 90, 91]

​ 这样是不是就显得代码很简洁明了,并且少了很多

​ 所以,列表在需要同时处理多个数据的时候非常有用(重点)

什么是列表

  • 列表是容器型数据类型,将[]作为容器的标志,里面多个元素用逗号隔开:[数据1,数据2,数据3,…]
  1. 特点:列表是可变的(可变指的是容器中元素的个数和值可变 - 支持增删改)
    列表是有序的(支持下标操作)
  2. 元素的要求:没有要求(任何类型的数据都可以作为列表的元素,同一个列表中的元素的类型还可以不一样)

​ 那么,下面我们定义一个列表,并且验证一下列表的特点

# 空列表
list1 = []
list2 = []
print(list1, list2)
print(len(list1), len(list2))

# 列表中的元素可以是任何类型的数据
list3 = [10, 1.23, False, None, 'abc', [10, 20]]
print(list3)

# 列表是有序的(顺序影响结果)
print([10, 20, 30] == [10, 30, 20])  # False
print({10, 20, 30} == {10, 30, 20})  # True(集合无序)

查操作

  1. 查单个元素 - 一次获取一个元素

    ​ 语法:

    ​ 列表[下标] - 获取指定列表中指定下标对应的元素

    ​ 说明:
    ​ 1)列表 - 需要获取元素的列表(可以是任何结果是列表的表达式,比如:保存列表的变量,具体的列表数据等)
    ​ 2)[] - 固定写法
    ​ 3)下标 - 下标又叫索引,是列表中元素在列表的位置信息
    ​ 列表中的每个元素都有两个索引值,一个是从前往后从0(第一个)开始不断增加的,另一个是从后往前从-1(倒数第一格)开始不断减小
    ​ 注意:下标不能越界

    nums = [100, 98, 78, 99, 50]
    print(nums[-1], nums[4])
    print('--' * 50)
    # print(nums[5])    #list index out of range
    # print(nums[-6])  # list index out of range
    
  2. 切片 - 一次获取多个元素\

    1)切片的完整写法

    语法:
    列表[开始下标:结束下标:步长] - 根据下标和步长获取指定列表中的部分元素

    1)怎么确定切片结果
    第一步:确定结果是否为空列表(看从开始下标到结束下标的方向和步长对应的方式是否一致,如果方向一致结果不一定为空,反之结果肯定为空)
    步长为正:表示从前往后取
    步长为反:表示从后往前取
    第二步:确定有效范围 - 开始下标对应的元素取得到,结束下标对应的元素取不到
    第三步:在有效范围内,按照步长的绝对值确定获取内容
    如果绝对值1,在有效范围内容一个一个按顺序取
    如果绝对值2,在有效范围内容取一个跳一个按顺序取
    如果绝对值3,在有效范围内容取一个跳两个按顺序取

    2)怎么写切片
    第一步:确定开始下标(目标对应的第一个元素对应的下标)
    第二步:确定步长
    确定正负号:看目标元素在原列表中的顺序是从前往后(+)还是从后往前(-)
    确定绝对值:
    第三步:确定结束下标: 保证需要获取的数据全部在有效范围内

    heroes = ['王昭君', '孙膑', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
    
    print(heroes[1: 4: 1])
    print(heroes[-1: 4: 1])
    print(heroes[2: 6: 2])
    print(heroes[0: 5: -2])
    print('--' * 50)
    
    heroes = ['王昭君', '孙膑', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
    print(heroes[-1: 1: 2])  # []
    print(heroes[2:7:-2])  # []
    print(heroes[8:1:3])  # []
    print(heroes[6:0:-2])  # ['孙悟空','墨子','李白']
    print(heroes[-1:1:-1])  # ['妲己','李信','诸葛亮','孙悟空','澜','墨子','百里守约','李白']
    print(heroes[0:7:3])  # ['王昭君','百里守约','孙悟空']
    print('--' * 50)
    heroes = ['王昭君', '孙膑', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
    
    # '王昭君', '孙膑', '李白'
    print(heroes[0:3:1])
    # '百里守约', '墨子', '澜', '孙悟空'
    print(heroes[3:7:1])
    # '诸葛亮', '孙悟空', '澜'
    print(heroes[-3:-6:-1])
    # '孙膑', '墨子', '诸葛亮'
    print(heroes[1:-2:3])
    # '妲己','澜''孙膑'
    print(heroes[-1::-4])
    # '孙膑', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信'
    print(heroes[1:-1:1])
    print('--' * 50)
    

    2).切片的省略写法

    列表[开始下标:结束下标:步长]

    a.省略步长 - 相当于步长为1
    列表[开始下标:结束下标]

    b.省略开始下标 - 表示从头开始(看步长的正负,开始下标在第一个或者在最后一个)
    列表[:结束下标:步长],列表[:结束下标]

    c.省略结束下标 - 如果步长为正就从开始下标开始一直取到最后一个元素;如果步长为负,就从开始下标开始一直取到第一个元素
    列表[开始下标::步长]

    heroes = ['王昭君', '孙膑', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
    print(heroes[1:4])  # ['孙膑', '李白', '百里守约']
    print(heroes[-1:3])  # []
    
    print(heroes[:4:2])  # ['王昭君', '李白']
    print(heroes[:4:-2])  # ['妲己', '诸葛亮', '澜']
    print(heroes[:-4])  # ['王昭君', '孙膑', '李白', '百里守约', '墨子', '澜']
    
    print(heroes[1::2])  # ['孙膑', '百里守约', '澜', '诸葛亮', '妲己']
    print(heroes[-3::-1])  # ['诸葛亮', '孙悟空', '澜', '墨子', '百里守约', '李白', '孙膑', '王昭君']
    print(heroes[3:])  # ['百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
    
    print(heroes[::-3])  # ['妲己', '孙悟空', '百里守约', '王昭君']
    print(heroes[:])  # ['王昭君', '孙膑', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
    
  3. 遍历 - 一个一个的获取列表中所有的元素

    方法一:
    for 变量 in 列表:
    循环体中的变量直接是列表中的元素
    方法二:通过遍历下标来遍历列表
    for 变量 in range(len(列表)):
    循环体中的变量获取到的是每个元素的下标,然后需要通过:列表[下标]再获取元素
    方法三:
    for 变量1,变量2 in enumerate(列表):
    循环体中变量1是元素下标,变量2是元素

    games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
    # 方法一:
    for i in games:
        print(i)
    print('--' * 50)
    # 方法二:
    # 0,1,2,3,4,5,6,7
    # -1,......,-8
    for index in range(len(games)):
        print(index, games[index])
    print('--' * 50)
    # 方法三
    for index, item in enumerate(games):
        print(index, item)
    
    # 练习1:计算nums中所有元素的和
    nums = [12, 45, 8.34, 56, 23]
    sum1 = 0
    for i in nums:
        sum1 += i
    print(sum1)
    # 练习2:统计nums中所有偶数的个数
    nums = [23, 88, 90, 88, 67, 55, 11]
    count = 0
    for i in nums:
        if i % 2 == 0:
            count += 1
    print(count)
    # 练习3: 统计list1中字符串的个数
    list1 = [109, 23.4, True, 'abc', 'hello', 23, '12', False, None]
    count = 0
    for i in list1:
        if type(i) == str:
            count += 1
    print(count)
    

    增删改

    1. 增 - 添加元素

      1)列表.append(元素) - 在列表的最后添加指定元素

      nums = [10, 20, 30]
      print(nums)  # [10, 20, 30]
      nums.append(100)
      print(nums)  # [10, 20, 30, 100]
      nums.append(200)
      print(nums)  # [10, 20, 30, 100, 200]
      

      2)列表.insert(下标,数据) - 在列表指定下标对应元荤前插入指定数据

      nums = [10, 20, 30]
      print(nums)  # [10, 20, 30]
      nums.insert(-1, 100)
      print(nums)  # [10, 20, 100, 30]
      nums.insert(0, 200)
      print(nums)  # [200, 10, 20, 100, 30]
      # 练习:使用一个新的列表提取nums中所有的偶数
      nums = [17, 89, 90, 81, 84, 4, 56]
      # [90, 84, 4, 56]
      nums1 = []
      for i in nums:
          if i % 2 == 0:
              nums1.append(i)
      print(nums1)
      
    2. 删 - 删除元素

      1)del 列表[下标] - 删除列表中指定下标对应的元素

      games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
      print(games)
      
      del games[2]
      print(games)
      

      2)列表.remove(元素) - 删除列表中指定元素(如果元素不存在会报错,如果有多个,只会删除最前边的哪一个)

      games = ['开心消消乐', '王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
      print(games)
      
      games.remove('和平精英')
      print(games)
      
      # games.remove('部落冲突')  # ValueError: list.remove(x): x not in list
      games.remove('开心消消乐')
      print(games)
      

      3)pop()

      列表.pop() - 取出列表最后一个元素

      列表.pop(下标) - 取出列表指定下标对应的元素

      games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
      x = games.pop()
      print(games, x)
      
      x = games.pop(2)
      print(games, x)
      
    3. 改 - 修改元素的值

      列表[下标] = 新元素 - 修改列表中指定下标对应的元素为新的元素

      games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
      print(games)
      
      games[0] = '部落冲突'
      print(games)
      
      games[-1] = '炉石传说'
      print(games)
      
      # 案例:将scores中所有不及格的分数全部修改成'重修'
      scores = [89, 23, 79, 99, 45, 60, 78, 59]
      # [89, '重修', 79, 99, '重修', 60, 78, '重修']
      for index, item in enumerate(scores):
          if item < 60:
              scores[index] = '重修'
      print(scores)
      

      列表相关操作

      1. 数学运算符:+、*

        列表1 + 列表2 - 将两个列表中的元素依次合并成一个新的列表

        list1 = [10, 20, 30]
        list2 = [100, 200, 300]
        list3 = list1 + list2
        print(list3)  # [10, 20, 30, 100, 200, 300]
        

        列表 * N / N * 列表 - 列表中元素重复N遍产生一个新的列表

        list1 = [10, 20]
        list4 = list1 * 3
        print(list4)
        
        nums = [10] * 3
        print(nums)
        
      2. in和not in 操作

        元素 in 列表 - 判断列表中是否存在指定元素

        元素 not in 列表 - 判断列表中是否不存在指定元素

        print(10 in [10, 20, 30])  # True
        print([10, 20] in [10, 20, 30])  # False
        print([10] in [10, 20, 30])  # False
        print([10] in [[10], 20, 30])  # True
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值