列表的增删改

列表2

一、列表的增删改

  1. 增 - 添加元素

    1)列表.append(元素) - 在指定列表的最后添加指定的元素(不会产生新的列表,而是直接在原列表中添加)

    heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
    print(heroes)
    
    heroes.append('剑圣')
    print(heroes)
    
    heroes.append('琴女')
    print(heroes)
    
    scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
    

    案例:提取scores中所有不及格的分数 [45, 29, 59]

    new_scores = []
    for i in scores:
        if i < 60:
            new_scores.append(i)
    print(new_scores)
    

    练习1:利用append删除列表中所有的奇数

    nums = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
    #  [88, 76, 66]
    new_nums = []
    for i in nums:
        if i % 2 == 0:
            new_nums.append(i)
    print(new_nums)
    

    练习2:将scores中所有不及格的分数改成’补考’

    scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
    # [89, '补考', 99, 65, 93, 81, '补考', 88, 76, '补考', 66]
    new_scores = []
    for i in scores:
        if i < 60:
            new_scores.append('补考')
        else:
            new_scores.append(i)
    print(new_scores)
    

    2)列表.insert(下标,元素) - 将指定元素插入到列表中指定下标对应的元素前

    heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
    print(heroes)
    
    heroes.insert(-1,'亚索')
    print(heroes)
    
    heroes.insert(0,'石头人')
    print(heroes)
    
    heroes.insert(2,'百里玄策')
    print(heroes)
    
  2. 删 - 删除元素

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

    heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
    
    del heroes[1]
    print(heroes) # ['寒冰射手', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
    
    del heroes[1]
    print(heroes) # ['寒冰射手', '金克斯', '小法', '卡牌', '蛇女']
    

    2)列表.remove(元素) - 删除列表中的指定元素

    注意:

    ​ a.如果删除的元素不存在,那么会报错

    ​ b.如果删除的元素有多个,那么只删最前面那一个

    heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法','维鲁斯', '卡牌', '蛇女']
    heroes.remove('小炮')
    print(heroes)
    
    #heroes.remove('塔魔') # ValueError: list.remove(x): x not in list
    
    heroes.remove('维鲁斯')
    print(heroes)
    

    3)pop - 只是让数据从列表中消失,但不会从内存中消失 [且,有返回值]

    两种形式:

    ​ a.列表.pop() - 取走列表最后一个元素,并且返回

    ​ b.列表.pop(下标) - 取走列表中指定下标对应的元素,并且返回

    heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法','维鲁斯', '卡牌', '蛇女']
    
    result1 = heroes.pop()
    print(heroes)
    print(heroes,result1)#有返回值result1
    
    heroes.pop(0)
    print(heroes)
    
  3. 改 - 修改元素的值

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

    heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法','维鲁斯', '卡牌', '蛇女']
    
    heroes[1] = '孙悟空'
    print(heroes)
    

    练习:将scores中所有低于60分的成绩修改成0分(使用改)

    scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
    for index,item in enumerate(scores):
        if item < 60:
            scores[index] = 0
    print(scores)
    # 方法2:
    for index in range(len(scores)):
        if scores[index] < 60:
            scores[index] = 0
    
    print(scores)
    

二、列表相关操作

  1. 列表加法运算

    语法:列表1 +列表2 - 将两个列表合并成一个新的列表

    A = [10, 20, 30]
    B = [100, 200]
    C = A + B
    print(C) # [10, 20, 30, 100, 200]
    print(A + A) # [10, 20, 30, 10, 20, 30]
    
  2. 列表乘法运算

    语法:列表 * N、N*列表 - 将列表中的元素重复N次产生一个新的列表

    C = A * 2
    print(C) # [10, 20, 30, 10, 20, 30]
    
    print(B * 3) # [100, 200, 100, 200, 100, 200]
    
    print(['小明','小爷'] * 3) # [100, 200, 100, 200, 100, 200]
    
  3. 列表比较运算

    1)比较是否相等:==、!= - [列表有序,所以顺序不同,值就不同]

    print([10, 20, 30] == [10, 20, 30]) # True
    print([10, 20, 30] == [10, 30, 20]) # False
    
    

    2)比较大小:>、<、>=、<=

    注意:两个列表比较大小,比较的是第一对不相等的元素的大小(相同位置上的元素

    print([10, 20, 30] > [1, 100, 200, 300, 400]) #True
    print([10, 20, 30] > [10, 2, 200, 300, 400]) #True
    
  4. in 和 not in

    语法:

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

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

    print(10 in [10, 20, 30])  # True
    print(10 in [[10, 20], 30]) #False
    print([10, 20] in [10, 20, 30]) #False
    
    # 练习:已经列表A和B, 打印A和B的公共元素
    A = ['后羿', '甄姬', '鲁班7号', '赵云']
    B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云']
    C = []
    for i in A:
       if i in B:
           C.append(i)
    print(C)  #['后羿', '赵云']
    

三、列表相关函数

  1. 求和sum(数字序列) - 求数字序列中所有元素的数值和

    scores = [98, 23, 56, 88, 90, 70]
    result = sum(scores)
    print(result)
    
    # 1到100求和
    result = sum(range(101))
    print(result)
    
  2. 最大、最小值:max、min

    max(序列) - 求序列中的最大元素

    min(序列) - 求序列中的最小元素

    scores = [98, 23, 56, 88, 90, 70]
    result = max(scores)
    print(result)
    
    result = min(scores)
    print(result)
    

    补充:求最大值的逻辑

    scores = [98, 23, 56, 88, 90, 99, 70]
    max1 = scores[0]
    for i in scores:
        if i > max1:
            max1 = i
    print(max1)
    

    补充:求最小值的逻辑

    scores = [98, 23, 56, 88, 90, 99, 70]
    min1 = scores[0]
    for i in scores:
        if i < min1:
            min1 = i
    print(min1)
    
  3. sorted

    1. sorted(序列) - 将序列中的元素按从小到大的方式排序,创建一个新的列表,不会改变原序列的排序方式
    scores = [98, 23, 56, 88, 90, 99, 70]
    sorted(scores)
    print(scores) # [98, 23, 56, 88, 90, 99, 70]
    
    result = sorted(scores)
    print(result) #[23, 56, 70, 88, 90, 98, 99]
    
    1. sorted(序列,reverse=True) - 将序列中的元素按从大到小的方式排序,创建一个新的列表并返回

      scores = [98, 23, 56, 88, 90, 99, 70]
      result = sorted(scores,reverse=True)
      print(result) # [99, 98, 90, 88, 70, 56, 23]
      
  4. len

    len(序列) - 统计序列中元素的个数

    scores = [98, 23, 56, 88, 90, 99, 70]
    print(len(scores)) #7
    print(len('xiaoye520daitaobobo'))
    print(len(range(1,100,2))) #50
    
  5. list

    list(序列) - 将指定的序列转换成列表(任何序列都可以转换成列表,转的时候直接将序列中的元素,作为列表中的元素)

    result = list('abc123')
    print(result)
    
    result = list(range(5))
    print(result)
    

四、列表相关方法

  1. 列表.clear() - 清空列表

    nums = [10, 9, 8, 7]
    print(nums) # [10, 9, 8, 7]
    
    nums.clear()
    print(nums) # []
    
    
  2. 列表.count(元素) - 统计列表中指定元素的个数

    nums = [10, 9, 89, 23, 10]
    print(nums.count(9))
    print(nums.count(10))
    
  3. 列表.extend(序列) - 将序列中的元素全部添加到列表中去

    list1 = [10, 20]
    list1.extend([100, 200])
    print(list1)
    # list1.append([100, 200])
    # print(list1) #[10, 20, 100, 200, [100, 200]]
    
    list1.extend('abc')
    print(list1) # [10, 20, 100, 200, 'a', 'b', 'c']
    
    
  4. 列表.index(元素) - 获取列表中指定元素对应的下标(返回的是从0开始的下标值)

    nums = [10, 9, 89, 23, 10]
    # print(nums.index(100)) # ValueError: 100 is not in list
    print(nums.index(89))#2
    print(nums.index(10))#0
    
  5. 列表.reverse() - 将列表倒序

    nums = [10, 9, 89, 23, 10]
    nums.reverse()
    print(nums)#[10, 23, 89, 9, 10]
    
    
  6. sort()

    a.列表.sort() - - 将列表中的元素从小到大排序【直接修改原列表元素的顺序】

    nums = [10, 9, 89, 23, 10]
    result = nums.sort()
    print(nums)#[9, 10, 10, 23, 89]
    print(result)#None
    
    
    # sorted(序列) - 将序列中的元素按从小到大的方式排序,创建一个新的列表,不会改变原序列的排序方式
    nums = [10, 9, 89, 23, 10]
    result = sorted(nums)
    print(nums) # [10, 9, 89, 23, 10]
    print(result) # [9, 10, 10, 23, 89]
    

    b.列表.sort(reverse=True) - 将列表中的元素从大到小排序,创建一个新的列表,不会改变原序列的排序方式

    
    nums = [10, 9, 89, 23, 10]
    nums.sort(reverse=True)
    print(nums)# [89, 23, 10, 10, 9]
    

五、列表赋值问题

  1. 拷贝和直接赋值

    需求:已知一个列表,现在需要创建和原列表一模一样的新的列表

    1)直接赋值 - 一个变量直接给另外一个变量,赋值后两个变量

    nums2 = nums
    print('nums:',nums)
    print('nums2:',nums2)
    

    2)拷贝

    # 一个变量通过拷贝的方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,创建一个新数据,然后将新的数据对应的内存地址赋值给新变量
    
    nums3 = nums * 1
    print('nums3:',nums3)
    
    nums4 = nums + []
    print('nums4:',nums4)
    
    nums5 = nums[:]
    print('nums5:',nums5)
    
    nums6 = nums.copy()
    print('nums6:',nums6)
    
    print('-----------------修改后--------------------')
    nums.append(100)
    
    print('nums2:',nums2)
    
    print('nums3:',nums3)
    print('nums4:',nums4)
    print('nums5:',nums5)
    print('nums6:',nums6)
    

六 、列表推导式

  1. 列表推导式结构1

    1)语法:[表达式 for 变量 in 序列]

    2)功能:让变量去序列中取值,一个一个的取,取完为止,每取一个值就计算一次表达式的结果,并且将计算结果作为列表的一个元素

    result = [10 for i in range(5)]
    print(result) # [10, 10, 10, 10, 10]
    
    result = [i*2 for i in range(5)]
    print(result) #[0, 2, 4, 6, 8]
    
    # 应用
    #案例1:将nums中所有的元素乘以2
    nums = [10, 23, 89, 67]
    result = [i*2 for i in nums]
    print(result) # [20, 46, 178, 134]
    
    # 案例2:获取nums中所有元素的个位数
    nums = [103, 230, 89, 67]
    result = [i % 10 for i in nums]
    print(result)# [3, 0, 9, 7]
    # 取十位数
    result = [i//10%10 for i in nums]
    print(result)#[0, 3, 8, 6]
    
    
  2. 列表推导式结构2

    1)语法:[表达式 for 变量 in 序列 if 条件语句]

    2)原理:
    让变量去序列中取值,一个一个的取,取完为止,每取一个值就判断一次条件是否成立,如果成立就计算表达式值作为列表的元素

    result = [i * 2 for i in range(5) if i % 2 == 0]
    print(result) #[0, 4, 8]
    
    # 案例1:删除scores中所有不及格的分数
    scores = [98, 23, 56, 88, 90, 99, 70]
    result = [i for i in scores if i < 60]
    print(result) #[23, 56]
    
    # 案例2:提取nums中所有奇数的个位数
    nums = [103, 230, 89, 67]
    result = [i % 10 for i in nums if i % 2 != 0]
    print(result) #[3, 9, 7]
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值