• 【Python入门】Python的List容器二


    5. Python的List容器二

    5.5 Python向list添加新的元素

    现在班里面有4名同学:

    names = ['Alice', 'Bob', 'David', 'Ellena']
    
    • 1

    在Python中,list提供了一系列的方法可以让我们操作list中的元素,其中也包含了添加元素的方法

    • 第一个办法是用append()方法,把新同学追加到列表的末尾:
    names = ['Alice', 'Bob', 'David', 'Ellena']
    names.append('Candy')
    print(names) # ==> ['Alice', 'Bob', 'David', 'Ellena', 'Candy']
    
    • 1
    • 2
    • 3

    注意,append()方法总是将元素添加到list的尾部。
    如果上面的列表需要按照首字母排序的话,那么Candy应该是排在第三的位置的,这怎么办呢?

    • 这就需要使用list的insert()方法

    insert()方法和append()方法不一样,insert()方法需要两个参数,分别是需要插入的位置,以及需要插入的元素。

    names = ['Alice', 'Bob', 'David', 'Ellena']
    names.insert(2, 'Candy')
    print(names) # ==> ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    
    • 1
    • 2
    • 3

    注意,将Candy插入到第三的位置之后,原来的名字,都将自动往后移动一位,这个时候再使用相同的索引获取后面的元素,将会得到不一样的结果

    names = ['Alice', 'Bob', 'David', 'Ellena']
    print(names[2]) # ==> David
    names.insert(2, 'Candy')
    print(names[2]) # ==>Candy
    
    • 1
    • 2
    • 3
    • 4

    示例

    班上已有同学[‘Alice’, ‘Bob’, ‘Candy’, ‘David’, ‘Ellena’],新来报到3名同学分别是’Zero’, ‘Phoebe’, ‘Gen’,请综合利用append()方法,insert()方法,把三个同学的名字按首字母顺序插入到列表里去

    # Enter a code
    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L.append('Zero')
    L.insert(5, 'Phoebe')
    L.insert(5, 'Gen')
    print(L)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    5.6 Python从list删除元素

    那么我们如何把Ellena从已有的列表里面删除呢?这个时候我们可以使用列表的pop()方法,pop()方法默认删除列表的最后一个元素,并返回

    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    name = L.pop()
    print(name) # ==> Ellena
    print(L) # ==> L = ['Alice', 'Bob', 'Candy', 'David']
    
    • 1
    • 2
    • 3
    • 4

    对于Ellena,由于Ellena恰好位于列表的最后,所以可以直接使用pop()方法把Ellena从列表的最后删除,假如需要转学的不是Ellena,而是Candy,这个时候应该怎么办呢?

    pop()方法,除了可以删除最后一个元素以外,pop()还可以接收一个参数,指定需要删除的元素的位置。

    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    name = L.pop(2)
    print(name) # ==> Candy
    print(L) # ==> ['Alice', 'Bob', 'David', 'Ellena']
    
    • 1
    • 2
    • 3
    • 4

    示例

    L = [‘Alice’, ‘Bob’, ‘Candy’, ‘David’, ‘Ellena’],由于Candy,David依次转学,某同学写出以下代码,请判断以下代码是否可以正常运行?如果不可以,为什么?请帮忙修正

    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L.pop(2)
    L.pop(3)
    print(L)
    
    • 1
    • 2
    • 3
    • 4
    # Enter a code
    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L.pop(2)
    L.pop(2)
    print(L)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    5.7 Python替换list中的元素

    对于列表,除了可以向列表添加元素,删除列表元素以外,列表已有的元素,也是可以修改的,通过索引指定位置,并赋值新的元素,即可替换列表中原有的元素

    假如班上同学Candy需要转走了,同时有一个新的同学Canlina转入,那么按照字母排序,Canlina的位置恰好是Candy的位置。

    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L[2] = 'Canlina'
    print(L)
    
    • 1
    • 2
    • 3

    我们也可以使用倒序索引来完成同样的功能

    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L[-3] = 'Canlina'
    print(L)
    
    • 1
    • 2
    • 3

    注意,如果替换一个不存在的下标,则同样会引起Python运行错误

    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L[6] = 'Canlina'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list assignment index out of range
    
    • 1
    • 2
    • 3
    • 4
    • 5

    示例

    班上某次考试,[‘Alice’, ‘Bob’, ‘Candy’, ‘David’, ‘Ellena’] 的成绩分别是 89, 72, 88, 79, 99,请按照成绩高低,重新排列list中同学名字的顺序

    # Enter a code
    L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
    L[0] = 'Ellena'
    L[1] = 'Alice'
    L[2] = 'Candy'
    L[3] = 'David'
    L[4] = 'Bob'
    print(L)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    5.8 Python二维list

    有时候,一维list并不能满足所有的要求(上述所有list均为一维list), 这个时候需要二维list甚至更高维的list。
    比如:

    Alice最近的三次成绩分别是[100, 89, 92]
    Bob最近的三次成绩分别是[70, 65, 81]
    Candy最近的三次成绩分别是[88, 72, 77]

    这个时候得到的就是一个二维list,对于二维list,列表里面的每一个元素仍然是一个列表。这个时候,如果需要从二维list all_scores获取Bob最近第三次考试的成绩,可以这样写

    alice_scores = [100,89,92]
    bob_scores = [70,65,81]
    candy_scores = [88,72,77]
    all_scores = [alice_scores, bob_scores, candy_scores]
    score = all_scores[1][2] # ==> 81
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其中all_scores[1]得到Bob的最近三次成绩的列表,再通过下标[2],则可以得到Bob第三次的成绩

    示例

    有三个长方体,他们的长宽高分别是[1, 2, 3], [5, 3, 2], [7, 3, 2],定义在数组L中,L = [[1, 2, 3], [5, 3, 2], [7, 3, 2]],请分别求出三个长方体的表面积

    # Enter a code
    L = [[1, 2, 3], [5, 3, 2], [7, 3, 2]]
    print(2*(L[0][0]+L[0][1]+L[0][2]))
    print(2*(L[1][0]+L[1][1]+L[1][2]))
    print(2*(L[2][0]+L[2][1]+L[2][2]))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    【自然语言处理】seq2seq模型—机器翻译
    大学生游戏静态HTML网页设计 (HTML+CSS+JS仿英雄联盟网站15页)
    零拷贝(Zero Copy)技术
    Abnova丨CMV CISH 探头解决方案
    总结 HTTPS 的加密流程
    【解决错误】ModuleNotFoundError: No module named ‘progress‘
    ElasticSearch总结二
    elastic,为什么from,size要限制10000
    chrome浏览器也能做自动化测试
    eclipse导入svn项目,项目有红色的感叹号/叉号
  • 原文地址:https://blog.csdn.net/weixin_42473228/article/details/125602383