• Python数据类型 ——— 列表


    列表

    列表(list)是一种有序和可更改的集合,列表中允许存在重复的成员。

    创建列表

    创建空列表

    在Python中,[]表示一个空列表。比如:

    a = []
    print(type(a))  # 
    print(a)        # []
    
    • 1
    • 2
    • 3

    此外,也可以通过list()的方式来创建一个空列表。比如:

    a = list()
    print(type(a))  # 
    print(a)        # []
    
    • 1
    • 2
    • 3

    创建非空列表

    创建列表时可以在[]中设置列表的初始值。比如:

    a = [1, 2, 3, 4, 5]
    print(type(a))  # 
    print(a)        # [1, 2, 3, 4, 5]
    
    • 1
    • 2
    • 3

    需要注意的是,列表中存放的元素可以是不同类型的。比如:

    a = [1, 'hello', True, [4, 5, 6]]
    print(type(a))  # 
    print(a)        # [1, 'hello', True, [4, 5, 6]]
    
    • 1
    • 2
    • 3

    新增列表元素

    append方法

    使用append方法可以在列表末尾新增一个元素。比如:

    a = [1, 2, 3, 4]
    a.append(2021)
    a.append('dragon')
    print(a)  # [1, 2, 3, 4, 2021, 'dragon']
    
    • 1
    • 2
    • 3
    • 4

    insert方法

    使用insert方法可以在指定下标位置新增元素。比如:

    a = [1, 2, 3, 4]
    a.insert(1, 5)
    a.insert(100, 'dragon')
    print(a)  # [1, 5, 2, 3, 4, 'dragon']
    
    • 1
    • 2
    • 3
    • 4

    说明一下:

    • Python是一种面向对象的语言,因此创建出来的列表本质是一个对象,而这里的append和insert都是列表的成员方法。
    • 调用insert方法时,如果指定的索引超过了列表中的最大下标,则将待插入元素插入在列表的末尾。

    删除列表元素

    pop方法

    使用pop方法可以删除列表最末尾的元素。比如:

    a = [1, 2, 3, 4]
    a.pop()
    print(a)  # [1, 2, 3]
    
    • 1
    • 2
    • 3

    使用pop方法也可以删除指定下标位置的元素。比如:

    a = [1, 2, 3, 4]
    a.pop(1)
    print(a)  # [1, 3, 4]
    
    • 1
    • 2
    • 3

    remove方法

    使用remove方法可以指定删除列表中特定值的元素。比如:

    a = [1, 2, 3, 4]
    a.remove(1)
    print(a)  # [2, 3, 4]
    
    • 1
    • 2
    • 3

    如果列表中存在多个特定值的元素,则remove方法只删除首次出现的元素。比如:

    a = [1, 2, 3, 4, 1]
    a.remove(1)
    print(a)  # [2, 3, 4, 1]
    
    • 1
    • 2
    • 3

    查找列表元素

    in和in not操作符

    使用in和in not操作符能够判定某个元素是否在列表中存在。比如:

    a = [1, 2, 3, 4]
    print(1 in a)       # True
    print(10 in a)      # False
    print(1 not in a)   # False
    print(10 not in a)  # True
    
    • 1
    • 2
    • 3
    • 4
    • 5

    index方法

    使用index方法也可以判定某个元素是否在列表中存在。比如:

    a = [1, 2, 3, 4]
    print(a.index(3))  # 2
    # print(a.index(10)) # 不存在,抛异常
    
    • 1
    • 2
    • 3

    注意: 使用index方法时,如果待查找元素在列表中,则返回该元素的下标,否则会抛出异常。

    下标访问列表元素

    访问列表元素

    通过下标访问操作符[]可以获取指定下标位置的元素。比如:

    a = [1, 2, 3, 4]
    print(a[2])  # 3
    
    • 1
    • 2

    此外,还可以通过下标修改访问到的元素的值。比如:

    a = [1, 2, 3, 4]
    a[2] = 100
    print(a)  # [1, 2, 100, 4]
    
    • 1
    • 2
    • 3

    注意: 如果指定下标的值超过了列表中的最大下标,则会抛出异常。

    负索引

    我们平常所说的下标都是从0开始计数的,而此处的下标是可以取负数的,我们称之为负索引,负索引其实就是从列表的最后一个元素开始往前,依次为-1、-2、-3、…。比如:
    在这里插入图片描述
    因此如果想要访问列表的最后一个元素,直接访问下标为-1的元素即可。比如:

    a = [1, 2, 3, 4]
    print(a[-1])  # 4
    
    • 1
    • 2

    遍历列表元素

    for循环遍历

    Python中的for循环可以直接遍历一个可迭代对象。比如:

    a = [1, 2, 3, 4]
    for elem in a:
        print(elem)
    
    • 1
    • 2
    • 3

    但需要注意的是,该方法下对循环变量的修改不会影响列表中的元素值。比如:

    a = [1, 2, 3, 4]
    for elem in a:
        print(elem)
        elem = elem + 10  # 不会影响列表中的元素值
    print(a)  # [1, 2, 3, 4]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此外,也可以用for循环遍历列表元素下标,然后以下标的方式依次遍历列表中的元素。比如:

    a = [1, 2, 3, 4]
    for i in range(len(a)):
        print(a[i])
    
    • 1
    • 2
    • 3

    以这种方式遍历列表元素,就能够对列表元素进行修改。比如:

    a = [1, 2, 3, 4]
    for i in range(len(a)):
        print(a[i])
        a[i] = a[i] + 10  # 会影响列表中的元素值
    print(a)  # [11, 12, 13, 14]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    说明一下: 通过len函数能够获取到列表中的元素个数。

    while循环遍历

    也可以用while循环对遍历列表元素下标,然后以下标的方式依次遍历列表中的元素。比如:

    a = [1, 2, 3, 4]
    i = 0
    while i < len(a):
        print(a[i])
        i += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    子列表提取

    [起始下标 : 结束下标]

    [起始下标 : 结束下标]的方式可以从列表中提取出,从起始下标开始到结束下标的一组元素。比如:

    a = [1, 2, 3, 4]
    print(a[1:3])  # [2, 3]
    
    • 1
    • 2

    注意: 提取出的子列表中包含起始下标的元素,但不包含结束下标的元素(前闭后开)。

    切片时省略边界

    提取子列表的过程也叫做切片的过程,以[起始下标 : 结束下标]的方式切片时可以省略起始下标或结束下标。

    • 如果以[起始下标 : ]的方式进行切片,则子列表中的元素包括起始下标的元素及其后续元素。
    • 如果以[ : 结束下标]的方式进行切片,则子列表中的元素包括结束下标之前的所有元素。
    • 如果以[ : ]的方式进行切片,则子列表中的元素包括原列表中的所有元素。

    切片示例:

    a = [1, 2, 3, 4]
    print(a[1:])   # [2, 3, 4]
    print(a[:2])   # [1, 2]
    print(a[:-1])  # [1, 2, 3]
    print(a[:])    # [1, 2, 3, 4]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意: 切片时也可以使用负索引。

    切片时指定步长

    [起始下标 : 结束下标 : 步长]的方式切片可以指定步长,即每访问一个元素后下标自增几步。比如:

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    print(a[::1])     # [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    print(a[::2])     # [1, 3, 5, 7, 9]
    print(a[::3])     # [1, 4, 7, 0]
    print(a[1:-1:2])  # [2, 4, 6, 8]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此外,切片时指定的步长也可以为负数,这时表示从后往前提取元素。比如:

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    print(a[::-1])  # [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    print(a[::-2])  # [0, 8, 6, 4, 2]
    
    • 1
    • 2
    • 3

    切片时下标越界问题

    如果切片时填写的下标超出了有效范围,运行程序后不会抛异常,而是尽可能把符合要求的元素提取出来。比如:

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    print(a[1:100])  # [2, 3, 4, 5, 6, 7, 8, 9, 0]
    
    • 1
    • 2

    拼接列表

    使用+拼接列表

    使用+可以把两个列表拼接在一起。比如:

    a = [1, 2, 3]
    b = [4, 5, 6]
    c = a + b
    print(a)  # [1, 2, 3]
    print(b)  # [4, 5, 6]
    print(c)  # [1, 2, 3, 4, 5, 6]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意: 使用+拼接后会生成一个新的列表,该操作不会影响两个原有列表。

    extend方法

    使用extend方法,可以把一个列表拼接到另一个列表的后面。比如:

    a = [1, 2, 3]
    b = [4, 5, 6]
    a.extend(b)
    print(a)  # [1, 2, 3, 4, 5, 6]
    print(b)  # [4, 5, 6]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意: a.extend(b)是把b列表中的元素拼接到a列表后面,该操作不会修改b列表。

    使用+=拼接列表

    使用+=也可以把一个列表拼接到另一个列表的后面。比如:

    a = [1, 2, 3]
    b = [4, 5, 6]
    a += b
    print(a)  # [1, 2, 3, 4, 5, 6]
    print(b)  # [4, 5, 6]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    说明一下:

    • +=和extend方法都可以将一个列表拼接到另一个列表后面,但使用extend方法会更高效。
    • 因为a += b等价于a = a + b,拼接过程中会先构造出拼接后的列表,然后将a原来的列表释放,再将这个拼接后的列表赋值给a。
    • a.extend(b)是直接把b列表中的元素拼接到a列表后面,避免了不必要的释放操作。

    列表常用接口汇总

    列表操作:

    列表操作方式
    子列表提取thislist[start:end:step](前闭后开)
    列表检查inin not
    列表拼接++=
    列表长度len()函数

    列表的成员函数:

    成员函数功能
    copy复制列表
    clear清空列表
    append在列表末尾添加一个元素
    insert在列表指定下标位置添加元素
    extend将列表元素(或任何可迭代的元素)添加到当前列表的末尾
    pop删除指定下标位置的元素(默认为最后一个)
    remove删除指定值的元素(首次出现)
    index返回具有指定值的元素的下标(首次出现)
    count返回具有指定值的元素个数
    reverse颠倒列表中元素的顺序
    sort对列表中元素进行排序
  • 相关阅读:
    js深浅拷贝:保证赋值后改变第二个变量的值,不影响第一个变量的值
    ipaguard界面概览
    ssm学术会议管理系统设计与实现毕业设计源码061504
    小黑子—MyBatis:第一章
    撬开多线程的大门——学习多线程必须掌握的基本概念
    JDBC-day05(DAO及相关实现类)
    elementUI textarea可自适应文本高度的文本域
    环境装好了,我们来学JDBC编程;数据库连接了,我来教操作~
    Baidu Comate 基于百度文心一言的智能编码助手
    java优先级队列PriorityQueue
  • 原文地址:https://blog.csdn.net/chenlong_cxy/article/details/127615928