Python 初识列表

Python 初识列表

列表的概述

  • 列表的定义

    • 列表是容器型数据类型(序列)之一,
    • 列表是以 [ ] 作为容器的标志,元素与元素之间用逗号隔开
  • 列表的特点

    • 列表是可变的 - 元素的个数、值和顺序可变
    • 列表是有序的 - 列表支持下标操作,并且列表中每个元素都具有两组下标值
  • 列表对元素的要求

    • 没有要求,即所有类型的数据都可以存放。
  • 空列表 - 没有任何元素的列表

    # len()可以获取序列中元素的个数,或者说是序列的长度
    list1 = []
    list2 = [ ]
    print(len(list1), len(list2))
    print(type(list1), type(list2))
    print(bool(list1), bool(list2))
    
    [Out]
    0 0
    <class 'list'> <class 'list'>
    False False
    

列表的操作

  • 查 - 获取元素

    • 提取 - 获取单个元素

      # 语法
      列表[下标]
      
      • 说明

        功能:获取到列表中指定下标的元素

        下标:下标又叫索引,是元素在有序序列中的位置信息

      names = ['神里凌华', '甘雨', '胡桃', '芭芭拉', '珊瑚宫 心海', '荧', '七七', '早柚', '哒哒鸭']
      print(names[0])
      print(names[-1])
      
      [Out]
      '神里凌华'
      '哒哒鸭'
      
      • 遍历 - 获取全部元素

        # 结构1
        for 变量 in 列表:
            循环体
        
        # 结构2
        for value in range(-len(列表) - 1, -1, 1)
            循环体
        
        # 结构3
        for index, value in enumerate(列表):
            循环体
        
        • 说明:

          功能:获取到序列中所有元素

          value:变量,起中间作用

        # 练习1:统计不及格人数
        scores = [89, 67, 56, 90, 98, 30, 78, 51, 99]
        count = 0
        for i in scores:
            if i < 60:
                count += 1
        print(count)
        
        # 练习2:统计列表中整数的个数
        list4 = [89, 9.9, 'abc', True, 'abc', '10', 81, 90, 23]
        count = 0
        for i in list4:
            # if type(i) == type(1):
            if type(i) == int:
                count += 1
        print(count)
        
        # 练习3:求nums中所有偶数的和
        nums = [89, 67, 56, 90, 98, 30, 78, 51, 99]
        sum_num = 0
        for i in nums:
            if i % 2 == 0:
                sum_num += i
        print(sum_num)
        
  • 增 - 添加元素

    • 添加单个元素

      • 列表.append(元素) - 在列表的最后添加一个元素

        movies = ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
        print(movies)
        movies.append('肖申克的救赎')
        print(movies)
        
        [Out]
        ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
        ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪', '肖申克的救赎']
        
      • 列表.insert(下标, 元素) - 在指定下年对应的元素前插入指定元素

        movies = ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
        print(movies)
        movies.insert(2, '沉默的羔羊')
        print(movies)
        
        [Out]
        ['五十六度灰', '哥斯拉大战金刚', '沉默的羔羊', '桃花侠大战菊花怪']
        
    • 批量添加元素

      • 列表1.extend(列表2) - 将列表2里的元素全部添加到列表1的后面

        movies = ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
        print(movies)
        movies.extend(['熊出没', '触不可及', 'V字仇杀队'])
        print(movies)
        
        [Out]
        ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
        ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪', '熊出没', '触不可及', 'V字仇杀队']
        
  • 删 - 删除列表元素

    • del 列表[下标] # 删除列表中指定下标对应的元素

      • 下标不能越界
      teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
      del teleplays[2]
      print(teleplays)
      del teleplays[-2]
      print(teleplays)
      
      [Out]
      ['琅琊榜', '大秦', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
      ['琅琊榜', '大秦', '康熙王朝', '破产姐妹', '亮剑', '西游记']
      
    • 列表.remove(元素) - 删除列表中指定元素

      • 如果元素不存在,会报错
      • 如果同一个元素出现多次,只会删除第一个
      teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
      teleplays.remove('琅琊榜')
      print(teleplays)
      nums = [10, 20, 30, 20, 10, 20]
      nums.remove(10)
      print(nums)
      
      [Out]
      ['大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
      [20, 30, 20, 10, 20]
      
    • pop()

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

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

      teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
      del_item = teleplays.pop()
      print(teleplays)    # ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸']
      print(del_item)
      teleplays.pop(1)
      print(teleplays)
      
    • 列表.clear() - 将列表清空

  • 改 - 修改元素的值

    teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
    print(teleplays)
    teleplays[0] = '庆余年'
    print(teleplays)
    
    [Out]
    ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
    ['庆余年', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
    

列表切片

  • 语法

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

    • 开始下标 - 下标值(0开始,-1开始都行);确定切片优先范围的起点,可以取到
    • : - 固定写法
    • 结束下标 - 下标值(无论正负,位置正确即可);确定切片有效范围的终点,取不到
    • 步长 - 决定切片方向(步长对应的方向必须和开始到结束的方向一致,否则切片为空列表)
      获取方式元素的方式(决定是一个一个取,还是跳着取)
    • 切片的有效范围:[开始下标, 结束下标)
    games = ['王者荣耀', '和平精英', '生化危机', '原神', '幻塔', '部落冲突']
    print(games[1:5:1])
    print(games[1:-1:1])
    print(games[3:-1:-1])
    print(games[-1:-5:1])
    print(games[0:-3:2])
    print(games[-1:2:-2])
    print(games[2:-1:1])
    print(games[2:-1:1])
    
    [Out]
    ['和平精英', '生化危机', '原神', '幻塔']
    ['和平精英', '生化危机', '原神', '幻塔']
    ['王者荣耀', '生化危机']
    ['部落冲突', '原神']
    ['生化危机', '原神', '幻塔']
    ['生化危机', '原神', '幻塔']
    ['生化危机', '原神', '幻塔']
    
  • 省略步长

    • 语法
      列表[开始下标: 结束下标] == 列表[开始下标: 结束下标: 步长]
      
    • 实例
      #省略步长,步长默认为1
      games = ['王者荣耀', '和平精英', '生化危机', '原神', '幻塔', '部落冲突']
      print(games[2:-2])
      
      [Out]
      ['生化危机', '原神']
      
  • 省略开始下标

    • 语法

      列表[: 结束下标: 步长] / 列表[: 结束下标]
      
    • 注意

      • 省略开始下标,如果为正,从第一个元素往后取;
      • 如果步长为负,从最后一个往前取。
    • 实例

      print(games[:-3])
      print(games[:3:-1])
      print(games[:-5:-1])
      
      [Out]
      ['王者荣耀', '和平精英', '生化危机']
      ['部落冲突', '幻塔']
      ['部落冲突', '幻塔', '原神', '生化危机']
      
  • 省略结束下标

    • 语法

      列表[开始下标: : 步长] / 语法:列表[开始下标: ]
      
    • 注意

      • 省略结束下标:如果不长为正,从开始下标开始取到最后一个元素;
      • 如果步长为负,从开始下标取到第一个元素。
    • 实例

      print(games[1:])
      print(games[3::2])
      print(games[-2::-1])
      
      [Out]
      ['和平精英', '生化危机', '原神', '幻塔', '部落冲突']
      ['原神', '部落冲突']
      ['幻塔', '原神', '生化危机', '和平精英', '王者荣耀']
      
  • 一起省略

    • 语法

      列表[: : 步长] / 列表[]
      
    • 实例

      print(games[::-1])
      print(games[::2])
      
      [Out]
      ['部落冲突', '幻塔', '原神', '生化危机', '和平精英', '王者荣耀']
      ['王者荣耀', '生化危机', '幻塔']
      

列表相关操作

  • 数学运算符

    • 加法运算

      print([1, 2, 3] + ['a', 'b', 'c'])
        
      [Out]
      [1, 2, 3, 'a', 'b', 'c']
      
    • 乘法运算

      print([1, 2, 3] * 3)
      
      [Out]
      [1, 2, 3, 1, 2, 3, 1, 2, 3]
      
  • 比较运算符

    • ==、!=

      print([1, 2, 3] == [1, 2, 3])    # True
      print([1, 2, 3] == [1, 3, 2])    # False
      print({1, 2, 3} == {1, 2, 3})    # True
      
    • 列表>(<、>=、<=) 列表2

      • 两个列表比较大小的原理:比较的是第一队不相等的元素大小(下标相同的元素为1对,这个下标是0开始的下标)

        print([1, 2, 3, 4, 5] > [1, 2])    # False 第一对(相同位置的人)元素的大小
        
        [Out]
        True
        
    • in 和 not in

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

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

        print(10 in [10, 20, 30])
        print([10, 20] in [10, 20, 30])
        
        [Out]
        True
        False
        

相关函数和方法

  • 列表.count(元素) - 统计额表总指定元素的个数

    nums = [10, 20, 30, 4, 10, 20, 10, 10]
    print(nums.count(10))
    print(nums.count(4))
    print(nums.count(100))
    
    [Out]
    4
    1
    0
    
  • 列表.index(元素) - 获取元素第一次在列表中出现的下标

    nums = [10, 20, 30, 4, 10, 20, 10, 10]
    print(nums.index(4))
    
    [Out]
    3
    
  • 列表.reverse() - 倒序

    nums = [10, 20, 30, 4, 10, 20, 10, 10]
    nums.reverse()
    print(nums)
    
    [Out]
    [10, 10, 20, 10, 4, 30, 20, 10]
    
  • 列表.sort() - 将列表中的元素从小到大排序

    nums = [10, 20, 5, 2, 100]
    nums.sort()
    # 列表.sort(reverse=True)    -    将列表从大到小排序
    nums.sort(reverse=True)
    print(nums)
    
    [Out]
    [2, 5, 10, 20, 100]
    [100, 20, 10, 5, 2]
    
  • 列表.copy() - 赋值列表产生一个元素一摸一样的新列表

练习

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

n = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70]
if len(n) % 2 == 1:
    print(n[len(n) // 2])
else:
    print(n[len(n) // 2 - 1], n[len(n) // 2])

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

sum_num = 0
for i in n:
    sum_num += i
print('所有元素和:', sum_num)

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

print(n[1::2])

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

for value in n:
    if value % 2 == 1:
        print(value, end=' ')

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

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

n = [value * 2 for value in n]
print(n)

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

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

# 方法1
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
value = len(names)
i, j = 0, 0
while j < value:
    count = names.count(names[i])
    if count != 1:
        del names[i]
        j += 1
    else:
        i += 1
        j += 1
print(names)

# 方法2
new_names = []
for i in names:
    if i not in new_names:
        new_names.append(i)
print(new_names)

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

n = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70]
n.remove(max(n))
n.remove(min(n))
print('平均分数:', sum(n) / len(n))

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 = []
if len(A) > len(B):
    for i in B:
        if i in A:
            C.append(i)
else:
    for i in A:
        if i in B:
            C.append(i)
print(C)

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

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

nums = [19, 89, 90, 600, 1]
max_num = nums[0]
for i in nums:
    if i > max_num:
        max_num = i
print(max_num)

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

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

nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3, 1]
item, value = 0, []
for i in nums:
    if i in value:
        continue
    count = nums.count(i)
    if count > item:
        value.append(i)
        item = count
    elif count == item:
        value.append(i)
print(value)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值