3.8 列表以及列表操作 和作业

本文详细介绍Python中列表的基本概念、常用操作方法及实例演示,包括元素的查找、切片、增删改等操作,以及列表的数学和比较运算。

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

列表以及列表操作

  1. 列表

     列表是容器型数据类型; 将[]作为容器标志,里面多个数据用逗号隔开:[元素1, 元素2, 元素3,...]
    
    names = []    # [] - 空列表
    list1 = [12, 2.3, True, 'abc', 12, [1, 2], {'a': 10}]
    
    #以上都是列表
    
      1. 查单个元素 - - - 获取列表中某一个元素

        '''
        语法:
        列表[下标]   -  获取列表中指定下标对应的元素
        
        说明:
        列表  -   任何结果是列表的表达式,例如:具体的一个列表值、保存		   列表的变量
        []   -   固定写法
        下标  -   又叫索引。它是元素在列表中的位置信息。
        '''
        names = ['林俊杰', '周杰伦', '王力宏', '陈奕迅', '薛之谦', '邓紫棋']
        
        print(names[0])    #林俊杰
        print(names[-1])   #邓紫棋
        
        
      2. 切片(查部分元素) - - - 同时获取列表中的多个元素

        '''
        语法:
        列表[开始下标:结束下标:步长]    - 从开始下标开始,每次下标值增加步长,取到结束下标前为止。
        
        注意:
        1)结束下标对应的元素一定取不到, 开始下标对应的元素可以取到
        2)如果步长为正,表示从前往后取,这个时候开始下标对应的位置必须在结束下标对应的位置前,否则结果是[]
        3)如果步长为负,表示从后往前取,这个时候开始下标对应的位置必须在结束下标对应的位置后,否则结果是[]
        
        '''
        
        names = ['林俊杰', '周杰伦', '王力宏', '陈奕迅', '薛之谦', '邓紫棋']
        print(names[1:-1])    #['周杰伦', '王力宏', '陈奕迅', '薛之谦']
        print(names[1:-1:2])  #['周杰伦', '陈奕迅']
        print(names[-1:1:-2]) #['邓紫棋', '陈奕迅']
        
        
        
        1. 省略步长 - 相当于步长是1

        #列表[开始下标:结束下标]

        names = [‘林俊杰’, ‘周杰伦’, ‘王力宏’, ‘陈奕迅’, ‘薛之谦’, ‘邓紫棋’]
        print(names[1:-1]) #[‘周杰伦’, ‘王力宏’, ‘陈奕迅’, ‘薛之谦’]
        print(names[-5:3]) #[‘周杰伦’, ‘王力宏’]
        print(names[4:-6]) # []

        
        
        
        2. 省略开始下标
        
         ```python
        # 列表[:结束下标:步长]      -      步长为正,从第一个元素开始往后取 ;步长为负,从最后一个元素开始往前取
        # 列表[:结束下标]     -   从第一个元素开始往后取
        
        heroes = ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
        print(heroes[:4:2])  #['后羿', '诸葛亮']
        print(heroes[:2:-1])    # ['孙膑', '王昭君', '甄姬', '娜可露露']
        print(heroes[:-1])      # ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君']
        
        1. 省略结束下标

          # 列表[开始下标::步长]  -  步长为正,从开始下标开始取到最后一个元素为止(往后取,取完为止);步长为负,从开始下标开始取到第一个元素为止
          # 列表[开始下标:]     -   从开始下标开始取到最后一个元素为止
          
          heroes = ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
          print(heroes[1:])       # ['李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
          print(heroes[2::-1])    # ['诸葛亮', '李元芳', '后裔']
          print(heroes[-1::-2])   # ['孙膑', '甄姬', '诸葛亮', '后裔']
          
        2. 一起省

          # 列表[::步长]
          # 列表[:]
          
          heroes = ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
          print(heroes[::-1])     # ['孙膑', '王昭君', '甄姬', '娜可露露', '诸葛亮', '李元芳', '后裔']
          print(heroes[::2])      # ['后裔', '诸葛亮', '甄姬', '孙膑']
          print(heroes[:])        # ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
          
    1. 遍历

      """
      方法一: 直接获取元素
      for 变量 in 列表:
         循环体
         
      变量取到的就是列表中的每个元素
      """
      games = ['王者荣耀', '和平精英', '狼人杀', '植物大战僵尸', '开心消消乐', '红色警戒']
      
      for x in games:
         print(x, end=' ')
         
      #王者荣耀 和平精英 狼人杀 植物大战僵尸 开心消消乐 红色警戒
      
      '''
      方法二:先获取每个元素对应的下标,然后再通过下标获取元素
      for 变量 in range(列表长度):
         列表[变量]
         
      len(列表)     -   获取列表中元素的个数
      '''
      
      for x in range(len(games)):
         print(x, games[x])
      '''
      0 王者荣耀
      1 和平精英
      2 狼人杀
      3 植物大战僵尸
      4 开心消消乐
      5 红色警戒
      '''
      
      
  2. 列表操作

    1. 增 - 往列表中添加元素

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

        subjects = ['iOS', '安卓']
        subjects.append('h5')
        print(subjects)       #['iOS', '安卓', 'h5']
        
      2. 列表.insert(下标, 元素) - 在列表的指定下标对应的元素前插入指定元素

        subjects = ['iOS', '安卓']
        subject.insert(1,'100')  
        print(subject)    #['100', iOS', '安卓']
        
        #练习:将输入的成绩插入到scores中,要求插入后不影响分数从大到小排序的性质
        num1 = 1
        scores = [100, 98, 97, 97, 89, 86, 72, 66, 63, 59, 42]
        for i in range(len(scores)):
            if scores[i] < num1:
                scores.insert(i,num1)
                break
        else:
            scores.append(num1)
        print(scores)    
        # [100, 98, 97, 97, 89, 86, 72, 66, 63, 59, 42, 1]
        
    2. 删 - 删除列表中的元素

      1. del 列表(下标)

        #del 列表[下标]    -   删除列表中指定下标对应的元素
        
        tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
        del tvs[-2]
        print(tvs)      # ['西游记', '甄嬛传', '庆余年', '还珠格格', '琅琊榜']
        
      2. 列表.remove(元素)

        # 2.2 列表.remove(元素)     -   删除列表中指定的元素
        # 如果元素不存在会报错;如果被删除的元素在列表中有多个,只删最前面的那一个
        
        
        tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
        tvs.remove('情深深雨蒙蒙')
        print(tvs)  # ['西游记', '甄嬛传', '庆余年', '还珠格格', '琅琊榜']
        
      3. 列表.pop(下标)

        # 列表.pop()      -      取出列表最后一个元素, 并且返回
        # 列表.pop(下标)    -   取出列表中指定下标对应的元素
        
        
        tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
        result = tvs.pop()
        print(tvs)      # ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙']
        print(result)   # 琅琊榜
        
    3. 改 - 修改某个元素的值

      # 列表[下标] = 新元素      -      修改列表中指定下标对应元素为新元素
      
      
      tvs = ['琅琊榜', '庆余年', '甄嬛传']
      tvs[0] = '生活大爆炸'
      print(tvs)  # ['生活大爆炸', '庆余年', '甄嬛传']
      
  3. 列表运算

    1. 列表数学运算

      1. 列表1 + 列表2 - 将两个列表合并产生一个新的列表

        list1 = [10, 20, 30]
        list2 = [100, 200]
        print(list1 + list2)      # [10, 20, 30, 100, 200]
        
      2. 列表*N / N*列表 - 将列表中元素重复N次产生一个新的列表

        list2 = [100, 200]
        
        print(list2 * 3)        # [100, 200, 100, 200, 100, 200]
        
    2. 列表比较运算

      1. 比较是否相等(顺序一样才能相等)

        print([10, 20, 30] == [10, 20, 30])    # True
        print([10, 20, 30] == [30, 20, 10])    # False 
        
      2. 比较大小 - 比较第一对不相等的元素的大小(两个列表相同位置上的元素是一对)

        print([100, 200] > [10, 20, 30, 40, 10000])    # True
        print([100, 200, 300] > [100, 1000, 2])     # False
        
      3. innot in

        # 元素 in 列表  -   判断指定的列表中是否存在指定元素
        # 元素 not in 列表  -   判断指定的列表中是否不存在指定元素
        
        nums = [10, 20, 30]
        
        print([10] in nums)    #True
        print([1] in nums)     #False
        print([10] not in nums)    #False
        
      4. 相关函数:maxminsortedsumlistlen

        1. max(列表) - 获取列表中最大的元素(这个列表中的元素类型一致,并且元素本身支持比较元素)

          nums = [89, 923, 78, 100, 92, 8]
          
          print(max(nums))    # 923
          
        2. min(列表) - 获取列表中最小的元素(这个列表中的元素类型一致,并且元素本身支持比较元素)

          nums = [89, 923, 78, 100, 92, 8]
          
          print(min(nums))    # 8
          
        3. sorted(列表, reverse = True) - 将列表中的元素从大到小排序,排序后产生一个新的列表

          # sorted(列表)    -   将列表中的元素从小到大排序,排序后产生一个新的列表
          # sorted(列表, reverse=True)  -   将列表中的元素从大到小排序,排序后产生一个新的列表
          
          nums = [89, 923, 78, 100, 92, 8]
          
          list1 = sorted(nums)
          print(list1)   #[8, 78, 89, 92, 100, 923]
          
          list2 = sorted(nums, reverse = True)
          print(list2)   #[89, 923, 78, 100, 92, 8]
          
          
        4. sum(列表) - 求列表中所有元素的和(列表必须是数字列表)

          nums = [89, 923, 78, 100, 92, 8]
          
          print(sum(nums))   # 1290
          
        5. list(序列) - 将序列转换成列表(获取序列中所有元素创建一个新的列表)

          x = 'abc123'
          print(list(x))    #['a', 'b', 'c', '1', '2', '3']
          print(list(range(2)))   #['0', '1']
          

      作业

1.已知一个数字列表,求列表中心元素。

list1 = [34, 14, 112, 442, 43]

if len(list1) % 2 == 0:
    print('中心元素为:', list1[len(list1)//2-1], list1[len(list1)//2])
else:
    print('中心元素为:', list1[len(list1) // 2])
    
#中心元素为: 112

2.已知一个数字列表,求所有元素和。

list1 = [34, 14, 112, 442, 43]

print('列表的和为:',sum(list1))
# 列表的和为: 645

3.已知一个数字列表,输出所有奇数下标元素。

list1 = [34, 14, 112, 442, 43]
list2 = []
for i in range(len(list1)):
    if i % 2 == 1:
        list2.append(list1[i])
print(list2)
# [14, 442]

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

list1 = [34, 14, 112, 442, 43, 45, 59, 97]
list2 = []
for i in list1:
    if i % 2 == 1:
        list2.append(i)
print(list2)

# [43, 45, 59, 97]

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

list1 = [34, 14, 112, 442, 43]
for i in range(len(list1)):
    x = list1.pop(i)
    list1.insert(i, x * 2)
print(list1)

# [68, 28, 224, 884, 86]

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三', '王五', '王五', '张三']
j = 1
count = 0
for i in range(len(names)-1):
    x = names.pop(i)
    while x in names and x != 1:
        names.remove(x)
        count += 1
        names.append(j)
    names.append(x)
for j in range(count):
    names.remove(1)
print(names)

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

list1 = [34, 14, 76, 98, 65, 96]
list1.remove(max(list1))
list1.remove(min(list1))
print('节目的平均分为:', sum(list1)/len(list1))

#节目的平均分为: 67.75

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]

A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []
for i in range(len(A)):
        if A[i] in B:
            C.append(A[i])
print(C)

# [1, 'a']

9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

list1 = [34, 14, 112, 442, 43]

list2 = sorted(list1)
print('最大值为',list2[-1])

10.*获取列表中出现次数最多的元素

例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值