美文网首页
列表的增删改

列表的增删改

作者: 匿隱 | 来源:发表于2019-01-22 12:18 被阅读0次

    animes = ['海贼王', '火影忍者', '一人之下', '海贼王', '秦时明月', '画江湖']

    1.增(添加列表元素)

    a.append

    列表.append(元素) - 在指定的列表的最后添加指定的元素(注意:这个操作不会产生新的列表)

    b.insert

    列表.insert(下标, 元素) - 在指定的下标前插入指定的元素(注意:这个操作不会产生新的列表)

    animes.append('一拳超人')
    print(animes)
    
    animes.insert(2, '犬夜叉')
    print(animes)
    
    animes.insert(0, '进击的巨人')
    print(animes)
    

    2.删(删除元素)

    a.del

    del 列表[下标] - 删除列表中指定下标对应的元素
    注意: del是python中的关键字, 可以用它删除任何数据
    这儿的下标不能越界

    del animes[-2]
    print(animes)
    
    b.remove

    列表.remove(元素) - 删除列表中第一个指定元素
    注意: 被删除的元素在列表中必须是存在的

    animes.remove('海贼王')
    print(animes)
    
    c.pop

    列表.pop() - 将列表中最后一个元素从列表中取出, 会返回取出来的元素
    列表.pop(下标) - 将列表中指定下标对应的元素从列表中取出, 会返回取出

    del_item = animes.pop()
    print(animes, del_item)
    
    del_item = animes.pop(0)
    print(animes, del_item)
    

    练习: 用一个列表统计一个班的学生年龄(控制台不断输入年龄值,直到输入end为止), 然后删除所有小于18岁的年龄

    [18, 20, 16, 15, 23]
    [18, 20, 23]

    ages = []    # 空列表,保存年龄
     # 1.产生年龄
    age = input('年龄:')
    while age != 'end':
        # 输入一个年龄就往列表中添加一个
         ages.append(int(age))
         # 输入下一个年龄
         age = input('年龄:')
    
    坑一: 遍历列表删除部分元素,删不全! --- 遍历的时候对原列表切片

    ages = [12, 13, 20, 18, 30]
    age = 12 12 < 18: ages.remove(12)
    ages = [13, 20, 18, 30]
    age = 20 20 < 18
    age = 18 18 < 18
    age = 30 30 < 18

    ages = [12, 13, 20, 18, 30]
    temp = ages[:]
    for age in temp:
        if age < 18:
            ages.remove(age)
    print(ages)
    
    
    # 简写
    ages = [12, 13, 20, 18, 30]
    for age in ages[:]:
        if age < 18:
            ages.remove(age)
    print(ages)
    
    将小于18岁的拎出来,存到一个新的列表中

    ages = [30,12, 13, 20, 18, 30, 10]
    index = range(6) = 0 ~ 5
    index = 0 age = 12 ages = [13, 20, 18, 30, 10]
    index = 1 age = 20 ages = [13, 20, 18, 30, 10]
    index = 2 age = 18
    index = 3 age = 30
    index = 4 age = 10 ages = [13, 20, 18, 30]
    index = 5 越界!

    ages = [12, 13, 20, 18, 30, 10]
    for index in range(len(ages)):
        age = ages[index]
        if age < 18:
            ages.pop(index)
    print(ages)
    
    ages = [12, 13, 20, 18, 30, 10]
    new_ages = []   # 保存被删除的元素
    index = 0
    while index < len(ages):
        age = ages[index]
        if age < 18:
            del_item = ages.pop(index)
            new_ages.append(del_item)
        else:
            index += 1    # 不需要删除的时候下标才增加
    
    print(ages, new_ages)
    
    坑二: 通过下标遍历列表,删除元素的时候,下标越界和元素获取不全

    解决办法:下标对应的元素需要删除,下标值不动;不会删除下标加1

    3.改(修改元素的值)

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

    list1 = [1, 2, 3]
    list1[0] = 'abc'
    print(list1)
    

    练习: 有一个列表中保存的是学生的成绩,要求将列表中成绩小于60分的改成'下一个班见',并且统计下一个班见的学生的个数

    scores = [90, 78, 50, 77, 23, 82, 45]
    count = 0
    for index in range(len(scores)):
        if scores[index] < 60:
            scores[index] = '下一个班见'
            count += 1
    print(scores, count)
    

    相关文章

      网友评论

          本文标题:列表的增删改

          本文链接:https://www.haomeiwen.com/subject/vduadqtx.html