• Python 列表数据类型(list)[学习 Python 必备基础知识][看此一篇就够了]


    您的“关注”和“点赞”,是信任,是认可,是支持,是动力......

    如意见相佐,可留言。
    本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

    在这里插入图片描述

    1 Python 列表数据类型概述

    列表是可变序列,通常用于存放同类项目的集合(其中精确的相似程度将根据应用而变化)。

    列表数据类型,在 Python 中用list表示,可以用type()函数查看。如下所示:

    list_demo = ["www.python.org", '码农阿杰', 100.1, [1, 2, 3, 4]]  # 创建列表,并赋值给变量 list_demo
    print(type(list_demo))
    
    

    运行结果:

    <class 'list'>
    

    列表将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,element1 ~ elementn 表示列表中的元素,个数没有限制,只要是 Python 支持的数据类型就可以。

    列表可以存储整数、小数(浮点数)、布尔值、复数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。

    注意事项:为了提高程序的可读性,不建议将不同类型的数据放入到同一个列表中。

    如下所示:

    [element1, element2, element3, ..., elementn]
    
    ["www.python.org", '码农阿杰', 100.1, [1, 2, 3, 4]]
    

    2 Python 创建列表

    2.1 使用 [] 直接创建列表

    格式如下:

    listname = [element1 , element2 , element3 , ... , elementn]  # 包含多个元素的列表
    emptylist = []  # 一个元素都没有的列表,称为空列表
    

    对以上格式说明:

    • listname :变量名。创建完列表后,通常会把列表赋值给一个变量,便于调用列表。
    • element1 ~ elementn: 表示列表的元素。

    使用 [] 直接创建列表举例,如下所示:

    list_demo1 = ['微信公众号:', '码农阿杰']
    list_demo2 = ['博客园', 'https://www.cnblogs.com/manongajie/']
    list_demo3 = ['CSDN 博客', 'https://blog.csdn.net/manongajie']
    list_demo4 = ['邮箱', 'manongajie@163.com']
    list_demo5 = [7, 4, 5, 9, 9, 1, 7, 4, 1]  # QQ
    list_demo6 = []  # 空列表
    
    

    2.2 使用 list() 函数创建列表

    使用 list() 内置函数创建列表,其实就是将其它数据类型转换为列表类型。举例如下所示:

    # 将字符串转换成列表
    list_demo1 = list('码农阿杰')
    print(list_demo1)
    
    # 将元组转换成列表
    tuple_demo1 = ('python', 'java', 'php', 'c')
    list_demo2 = list(tuple_demo1)
    print(list_demo2)
    
    # 创建空列表
    list_demo3 = list()
    print(list_demo3)
    
    

    运行结果:

    ['码', '农', '阿', '杰']
    ['python', 'java', 'php', 'c']
    []
    

    3 访问列表元素

    3.1 使用索引访问列表元素

    格式如下所示:

    listname[index]
    

    对以上格式说明,

    • listname:表示列表名字。
    • index:表示索引值。Python 支持正索引和负索引。

    举例如下所示:

    list_demo4 = ['微信公众号:码农阿杰', '博客园 https://www.cnblogs.com/manongajie/', 'CSDN 博客 https://blog.csdn.net/manongajie']
    
    print('list_demo4[0] =', list_demo4[0])
    print('list_demo4[1] =', list_demo4[1])
    print('list_demo4[2] =', list_demo4[2])
    print('list_demo4[-1] =', list_demo4[-1])
    print('list_demo4[-2] =', list_demo4[-2])
    print('list_demo4[-3] =', list_demo4[-3])
    
    

    运行结果:

    list_demo4[0] = 微信公众号:码农阿杰
    list_demo4[1] = 博客园 https://www.cnblogs.com/manongajie/
    list_demo4[2] = CSDN 博客 https://blog.csdn.net/manongajie
    list_demo4[-1] = CSDN 博客 https://blog.csdn.net/manongajie
    list_demo4[-2] = 博客园 https://www.cnblogs.com/manongajie/
    list_demo4[-3] = 微信公众号:码农阿杰
    

    3.2 使用切片访问列表元素

    格式如下所示:

    listname[start: end: step]
    

    对以上格式说明,

    • lsitname:表示列表名字。
    • start:表示开始索引。
    • end:表示结束索引。
    • step:表示步长。

    各个参数的使用比较灵活,详情 举例如下所示:

    list_demo5 = [1, 2, 3, 4, 5, 6]
    
    print('list_demo5[::] =', list_demo5[::])  # 三个参数都不写
    print('list_demo5[:2:2] =', list_demo5[:2:2])  # 不写 start 参数
    print('list_demo5[1::2] =', list_demo5[1::2])  # 不写 end 参数
    print('list_demo5[1:2:] =', list_demo5[1:2:])  # 不写 step 参数
    print('list_demo5[1:4:2] =', list_demo5[1:4:2])
    print('list_demo5[1:4:3] =', list_demo5[1:4:3])
    print('list_demo5[1:2] =', list_demo5[1:2])  # 不要 step 参数
    
    # 不要 step 参数
    print('list_demo5[:] =', list_demo5[:])
    print('list_demo5[1:] =', list_demo5[1:])
    print('list_demo5[2:] =', list_demo5[2:])
    print('list_demo5[:1] =', list_demo5[:1])
    print('list_demo5[:2] =', list_demo5[:2])
    print('list_demo5[1:3] =', list_demo5[1:3])
    
    

    运行结果:

    list_demo5[::] = [1, 2, 3, 4, 5, 6]
    list_demo5[:2:2] = [1]
    list_demo5[1::2] = [2, 4, 6]
    list_demo5[1:2:] = [2]
    list_demo5[1:4:2] = [2, 4]
    list_demo5[1:4:3] = [2]
    list_demo5[1:2] = [2]
    list_demo5[:] = [1, 2, 3, 4, 5, 6]
    list_demo5[1:] = [2, 3, 4, 5, 6]
    list_demo5[2:] = [3, 4, 5, 6]
    list_demo5[:1] = [1]
    list_demo5[:2] = [1, 2]
    list_demo5[1:3] = [2, 3]
    
    

    4 Python删除列表

    Python 自带的有垃圾回收机制,对于创建好的列表,如果不再使用,Python 会自动将其回收。

    当然,也可以手动进行删除,那就要使用del关键字了。

    使用del关键字手动删除的格式如下:

    del listname
    

    对以上格式说明,

    • listname:表示要珊瑚列表的名称。

    举例如下所示:

    list_demo6 = [1, 2, 3, 4, 5]
    print(list_demo6)
    del list_demo6  # 使用 del 关键字删除列表 list_demo6
    print(list_demo6)  # 删除后,再次打印
    
    

    运行结果:

    [1, 2, 3, 4, 5]
    Traceback (most recent call last):
      File "D:/Data/PycharmProjects/demo/demo.py", line 68, in <module>
        print(list_demo6)  # 删除后,再次打印
    NameError: name 'list_demo6' is not defined
    

    5 列表基本操作(增删改查)

    5.1 增(添加列表元素)

    5.1.1 Python append() 方法添加元素

    格式如下所示:

    listname.append(obj)
    

    对以上格式说明,

    • append()append()方法会在列表中添加元素,要注意的是:append()添加的元素在列表的末尾。
    • listname:表示要添加元素的列表。
    • obj:表示要添加到列表末尾的数据。obj如果是列表或元组,会将列表或元组当做一个整体作为要添加元素列表的一个元素,形成一个包含列表或元组的“新列表”(“新列表”指的是列表内存地址没变,元素更新了)。

    举例如下所示:

    例一,添加数据为字符串

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    list_demo1.append('码农阿杰')  # 用 append() 函数向列表 list_demo1 的末尾添加的数据为字符串
    print('---- 添加元素后的列表 ----:')
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', ':', '码农阿杰']
    

    例二,添加数据为列表

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.append([1, 2, 3])  # 用 append() 函数向列表 list_demo1 的末尾添加的数据为列表
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', ':', [1, 2, 3]]
    

    例三,添加数据为元组

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.append((1, 2, 3))  # 用 append() 函数向列表 list_demo1 的末尾添加的数据为元组
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', ':', (1, 2, 3)]
    

    5.1.2 Python extend() 方法添加元素

    格式如下所示:

    listname.extend(obj)
    

    对以上格式说明,

    • extend()extend()会在列表中添加元素,要注意的是extend()添加的元素在列表的末尾。这一点跟append()方法一致。
    • listname:要添加元素的列表。
    • objobj表示要添加到列表末尾的数据。要注意的是:会与append()方法不同,append()方法会将字符串、列表或元组当做一个整体作为要添加元素列表的一个元素,形成一个包含字符串、列表或元组的“新列表”(“新列表”指的是列表内存地址没变,元素更新了);而extend()方法会将它们包含的元素逐个添加到列表中,不会将它们视为一个整体哦。

    举例如下所示:
    例一,添加数据为字符串

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    list_demo1.extend('码农阿杰')  # 用 extend() 函数向列表 list_demo1 的末尾添加的数据为字符串
    print('---- 添加元素后的列表 ----:')
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', ':', '码', '农', '阿', '杰']
    

    例二,添加数据为列表

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.extend([1, 2, 3])  # 用 extend() 函数向列表 list_demo1 的末尾添加的数据为列表
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', ':', 1, 2, 3]
    

    例三,添加数据为元组

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.extend((1, 2, 3))  # 用 extend() 函数向列表 list_demo1 的末尾添加的数据为元组
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', ':', 1, 2, 3]
    

    5.1.3 Python insert() 方法插入元素

    格式如下所示:

    listname.insert(index , obj)
    

    对以上格式说明,

    • insert()insert()方法可以在列表中间某个(指定位置)位置插入元素。append()extend()方法只能在列表末尾插入元素。
    • listname:表示要插入元素的列表。
    • index:表示指定位置的索引值。
    • obj:要插入列表的数据。如果插入的数据是列表或元组,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,在这一点上和 append()方法是一样的。

    举例如下所示:
    例一,插入数据为字符串

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.insert(1, '码农阿杰')  # 用 insert() 方法向列表 list_demo1 中索引值为 1 的位置添加的数据为字符串
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', '码农阿杰', ':']
    

    例二,插入数据为列表

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.insert(1, [1, 2, 3])  # 用 insert() 方法向列表 list_demo1 中索引值为 1 的位置添加的数据为列表
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', [1, 2, 3], ':']
    

    例三,插入数据为元组

    list_demo1 = ['微信公众号', ':']  # 要添加元素的列表 list_demo1
    print('---- 原列表 ----:')
    print(list_demo1)
    print('---- 添加元素后的列表 ----:')
    list_demo1.insert(1, (1, 2, 3))  # 用 insert() 方法向列表 list_demo1 中索引值为 1 的位置添加的数据为元组
    print(list_demo1)
    
    

    运行结果:

    ---- 原列表 ----:
    ['微信公众号', ':']
    ---- 添加元素后的列表 ----:
    ['微信公众号', (1, 2, 3), ':']
    

    5.1.4 其他方法(使用 + 加法运算符)

    使用+加法运算符将两个或者多个列表相加,达到拼接列表的目的,这样做会生成一个新的列表,原有的列表不会被改变。

    从执行效率上看,不建议使用此种方法,因为执行效率较低。

    建议使用之前介绍的几种方法(术业有专攻,用专门的方法更专业哦)。

    举例如下所示:

    list1 = ['微信公众号:']
    list2 = ['码农阿杰']
    
    print('list1 =', list1)
    print('list2 =', list2)
    print('list1 + list2 =', list1 + list2)
    
    

    运行结果:

    list1 = ['微信公众号:']
    list2 = ['码农阿杰']
    list1 + list2 = ['微信公众号:', '码农阿杰']
    

    5.2 删(删除列表元素)

    5.2.1 根据目标元素所在位置的索引进行删除

    根据目标元素所在位置的索引进行删除,需要用del 关键字或 pop() 方法。

    del关键字,是专门用来执行删除操作的,不仅可以删除列表,还可以删除列表中的某些元素。
    pop()方法,删除列表中指定索引处的元素。

    使用格式如下所示:

    del listname[index]  # 删除列表中的单个元素
    del listname[start : end]  # 删除列表中某段连续的元素,del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素。 
    

    对以上格式说明,

    • listname表示要删除元素的列表。
    • index表示要删除元素的索引值。
    • start表示起始索引值。
    • end表示结束索引值。
    listname.pop(index)
    

    对以上格式说明,

    • listname表示要删除元素的列表。
    • index表示要删除元素的索引值。如果不写 index 参数,默认会删除列表中的最后一个元素。

    举例如下所示:

    例一,使用del关键字删除列表元素
    (1)使用del关键字删除单个元素

    list_demo = ['微信公众号', ':', '码农阿杰']  # 要删除元素的列表
    
    print('删除前的列表,list_demo =', list_demo)
    del list_demo[1]  # 删除索引值 1 所对应的元素
    print('删除后的列表,list_demo =', list_demo)
    
    

    运行结果:

    删除前的列表,list_demo = ['微信公众号', ':', '码农阿杰']
    删除后的列表,list_demo = ['微信公众号', '码农阿杰']
    

    (2)使用del关键字删除某段连续的元素

    list_demo = ['微信公众号', ':', '码农阿杰']  # 要删除元素的列表
    
    print('删除前的列表,list_demo =', list_demo)
    del list_demo[0: 2]  # 删除索引值 0 到 2 ,不包括 2 所对应的连续的元素
    print('删除后的列表,list_demo =', list_demo)
    
    

    运行结果:

    删除前的列表,list_demo = ['微信公众号', ':', '码农阿杰']
    删除后的列表,list_demo = ['码农阿杰']
    

    例二,使用pop()方法删除列表元素
    (1)指定index参数

    list_demo = ['微信公众号', ':', '码农阿杰']
    print('删除前:list_demo =', list_demo)
    list_demo.pop(1)  # 删除索引值为 1 的元素
    print('删除后:list_demo =', list_demo)
    
    

    运行结果:

    删除前:list_demo = ['微信公众号', ':', '码农阿杰']
    删除后:list_demo = ['微信公众号', '码农阿杰']
    

    (2)不指定index参数

    list_demo = ['微信公众号', ':', '码农阿杰']
    print('删除前:list_demo =', list_demo)
    list_demo.pop()  # 不指定 index 参数,默认删除最后一个元素
    print('删除后:list_demo =', list_demo)
    
    

    运行结果:

    删除前:list_demo = ['微信公众号', ':', '码农阿杰']
    删除后:list_demo = ['微信公众号', ':']
    

    5.2.2 根据元素本身的值进行删除

    根据元素本身的值进行删除,要用到列表提供的remove()方法。

    使用格式如下所示:

    listname.remove(element)
    

    对以上语法格式说明:

    • remove()remove()方法会根据元素本身的值进行删除。要注意的是:①该方法只会删除遇见的第一个指定元素,如果列表中还有相同的元素是不会被删除的;②必须保证要删除的元素在列表中是存在的,否则会报错。
    • listname:要删除元素的列表。
    • element:要删除的元素。

    举例如下所示:
    (1)列表中存在指定要删除的元素

    list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
    print('删除前:list_demo =', list_demo)
    list_demo.remove('微信公众号')  # 删除指定元素 “微信公众号”,只会删除遇见的第一个指定元素
    print('删除后:list_demo =', list_demo)
    
    

    运行结果:

    删除前:list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
    删除后:list_demo = [':', '码农阿杰', '微信公众号']
    

    (2)列表中不存在指定要删除的元素

    list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
    print('删除前:list_demo =', list_demo)
    list_demo.remove('微信号')  # 列表中不存在指定要删除的元素,会报错
    print('删除后:list_demo =', list_demo)
    
    

    运行结果:

    删除前:list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
    Traceback (most recent call last):
      File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 16, in <module>
        list_demo.remove('微信号')  # 列表中不存在指定要删除的元素,会报错
    ValueError: list.remove(x): x not in list
    

    5.2.3 删除列表中的所有元素

    要删除列表中的所有元素,需要使用列表提供的clear()方法。

    使用格式如下所示:

    listname.clear()
    

    对以上格式说明,

    • clear()clear()方法会删除列表中的所有元素。
    • listname:要删除所有元素的列表。

    举例如下所示:

    list_demo = ['微信公众号', ':', '码农阿杰']
    print('删除前:list_demo =', list_demo)
    list_demo.clear()  # 删除列表中所有的元素,也可以称为清空列表
    print('删除后:list_demo =', list_demo)
    
    

    运行结果:

    删除前:list_demo = ['微信公众号', ':', '码农阿杰']
    删除后:list_demo = []
    

    5.3 改(修改列表元素)

    5.3.1 修改单个元素

    格式如下所示:

    listname[index] = element
    

    对以上格式说明,

    • listname:要修改元素的列表。
    • index:要修改元素对应的索引值。
    • element:新元素值。

    举例如下所示:

    list_demo = ['微信号', ':', '码农阿杰']
    print('修改前:list_demo =', list_demo)
    list_demo[0] = '微信公众号'  # 修改索引值为 0 的元素
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = ['微信号', ':', '码农阿杰']
    修改后:list_demo = ['微信公众号', ':', '码农阿杰']
    

    5.3.2 修改一组元素

    修改一组元素,其实就是使用切片的方式给一组元素赋值。但是,不支持单个赋值(通常指数字。如果是字符串的话,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素)。

    如果不指定步长(指的是不指定step参数),新赋值的元素个数与原来的元素个数可以不相同。如此一来,就说明该操作既可以为列表添加元素(对空切片赋值),也可以为列表删除元素。

    如果指定步长,就要求新赋值的元素个数与原来的元素个数相同。

    举例如下所示:
    例一,不指定步长
    (1)修改一组元素的值

    list_demo = ['微信号', '=', '码农阿杰', '。']
    print('修改前:list_demo =', list_demo)
    list_demo[0: 2] = ['微信公众号', ':']
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = ['微信号', '=', '码农阿杰', '。']
    修改后:list_demo = ['微信公众号', ':', '码农阿杰', '。']
    

    (2)不支持单个赋值(通常指数字)

    list_demo = ['微信号', ':', '码农阿杰', '。']
    print('修改前:list_demo =', list_demo)
    list_demo[0: 0] = 12  # 不支持单个赋值(数字)
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = ['微信号', ':', '码农阿杰', '。']
    Traceback (most recent call last):
      File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 36, in <module>
        list_demo[0: 0] = 12
    TypeError: can only assign an iterable
    

    (3)不支持单个赋值(通常指数字),但是,如果是字符串的话,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素

    list_demo = ['微信号', ':', '码农阿杰', '。']
    print('修改前:list_demo =', list_demo)
    list_demo[0: 0] = '微信公众号'  # 不支持单个赋值(通常指数字),但是,如果是字符串的话,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = ['微信号', ':', '码农阿杰', '。']
    修改后:list_demo = ['微', '信', '公', '众', '号', '微信号', ':', '码农阿杰', '。']
    

    (4)为列表添加元素(对空切片赋值)

    list_demo = ['码农阿杰']
    print('修改前:list_demo =', list_demo)
    list_demo[0: 0] = ['微信公众号', ':']  # 对空切片赋值
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = ['码农阿杰']
    修改后:list_demo = ['微信公众号', ':', '码农阿杰']
    

    (5)为列表删除元素

    list_demo = ['微信公众号', ':', '码农阿杰', '。']
    print('修改前:list_demo =', list_demo)
    # 这里切片的写法有很多种,例如 list_demo[:]、list_demo[0:]、list_demo[0: 4]、list_demo[-4:]等等,就不全部列举了,可以研究一下切片。
    list_demo[:] = ['微信公众号', ':', '码农阿杰']  # 新赋值的元素个数与原来的元素个数可以不相同。相当于重新给列表赋值,并且元素个数变少了。
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = ['微信公众号', ':', '码农阿杰', '。']
    修改后:list_demo = ['微信公众号', ':', '码农阿杰']
    

    例二,指定步长

    list_demo = [1, 2, 3, 4, 5, 6, 7]  # 为了看的清楚,用字母添加到纯是数字的列表中
    print('修改前:list_demo =', list_demo)
    list_demo[1: 6: 2] = ['a', 'b', 'c']  # 从索引 1 开始每隔两个添加一个新元素,到索引 6 ,不包括 索引 6
    print('修改后:list_demo =', list_demo)
    
    

    运行结果:

    修改前:list_demo = [1, 2, 3, 4, 5, 6, 7]
    修改后:list_demo = [1, 'a', 3, 'b', 5, 'c', 7]
    

    5.4 查(查找列表元素)

    5.4.1 使用列表提供的index() 方法查找元素

    使用格式如下所示:

    listname.index(obj, start, end)
    

    对以上格式说明,

    • 返回值:index()方法返回某个元素在列表中出现的位置(索引)。如果查找的元素不存在,会报错。
    • listname:表示列表名称。
    • obj:表示要查找的元素。
    • start:表示起始位置。可以不写,表示检索从开头到end(不包括end)的元素。
    • end:表示结束位置。可以不写,表示检索从start到末尾的元素。
    • startend可以都不写,表示检索整个列表;都写,表示检索startend(不包括end)之间的元素。

    举例如下所示:

    list_demo = [1, 2, 3, 4, 5, 6, 7]  # 列表
    
    index1 = list_demo.index(3)  # 在整个列表中检索元素 3 的位置
    print('在整个列表中检索元素 3 的位置:', index1)
    
    index2 = list_demo.index(3, )
    print('在整个列表中检索元素 3 的位置:', index2)
    
    index3 = list_demo.index(3)  # 检索元素 3 在列表中的位置(在列表中的索引值)
    print('元素 3 在列表中的位置为:', index3)
    
    index4 = list_demo.index(3, 0, 3)  # 在索引值 0 到 3 之间检索元素 3 在列表中的位置
    print('在索引值 0 到 3 之间检索元素 3 在列表中的位置为:', index4)
    
    index5 = list_demo.index(3, 0, 2)  # 在索引值 0 到 2 之间检索元素 3 在列表中的位置,会报错,因为在这个范围内没有元素 3
    print('在索引值 0 到 2 之间检索元素 3 在列表中的位置为:', index5)
    
    # index6 = list_demo.index(11)  # 也会报错,因为在列表中不存在要查找的元素
    # print(index6)
    
    

    运行结果:

    在整个列表中检索元素 3 的位置: 2
    在整个列表中检索元素 3 的位置: 2
    元素 3 在列表中的位置为: 2
    在索引值 0 到 3 之间检索元素 3 在列表中的位置为: 2
    Traceback (most recent call last):
      File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 69, in <module>
        index5 = list_demo.index(3, 0, 2)  # 在索引值 0 到 2 之间检索元素 3 在列表中的位置,会报错,因为在这个范围内没有元素 3
    ValueError: 3 is not in list
    #Traceback (most recent call last):
    #  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 72, in <module>
    #    index6 = list_demo.index(11)  # 也会报错,因为在列表中不存在要查找的元素
    #ValueError: 11 is not in list
    

    5.4.2 使用列表提供的count()方法查找元素

    使用格式如下所示:

    listname.count(obj)
    

    对以上格式说明,

    • count()方法的返回值:count()方法返回某个元素在列表中出现的次数。如果返回 0,表示列表中不存在该元素。
    • listname:表示列表名。
    • obj:表示要统计的元素。

    举例如下所示:

    list_demo = [1, 2, 3, 4, 3, 6, 3]  # 列表
    
    nums1 = list_demo.count(3)  # 统计元素 3 在列表中出现的次数
    print('统计元素 3 在列表中出现的次数:', nums1, '次。')
    
    # 判断列表中是否存在元素 7
    nums2 = list_demo.count(7)
    
    if nums2:
        print('列表中存在元素 7 ')
    else:
        print('列表中不存在元素 7 ')
    
    

    运行结果:

    统计元素 3 在列表中出现的次数: 3 次。
    列表中不存在元素 7 
    

    6 列表排序

    6.1 使用列表提供的 sort() 方法排序

    对列表进行原地排序,可以使用列表自身提供的sort()方法。

    使用格式如下所示:

    listname.sort(*, key=None, reverse=False)
    

    对以上格式说明,

    • sort()sort()方法会对列表进行原地排序,即修改原列表。
    • sort()方法接受两个仅限以关键字形式传入的参数。
    • key:指定带有一个参数的函数,用于从每个列表元素中提取比较键 (例如 key=str.lower)。 对应于列表中每一项的键会被计算一次,然后在整个排序过程中使用。 默认值 None 表示直接对列表项排序而不计算一个单独的键值。
    • reversereverse 为一个布尔值。默认为False,表示升序排序。 如果设为 True,则每个列表元素将按反向顺序(降序)比较进行排序。

    举例如下所示:
    例一,

    list_demo = [4, 1, 3, 2, 8, 5]
    
    print('排序前 list_demo =', list_demo)
    list_demo.sort()  # 对列表进行升序排序操作
    # list_demo.sort(reverse=False)  # 升序排序操作也可以这么写
    print('升序排序后 list_demo =', list_demo)
    list_demo.sort(reverse=True)  # 降序排序
    print('降序排序后 list_demo =', list_demo)
    
    

    运行结果:

    排序前 list_demo = [4, 1, 3, 2, 8, 5]
    升序排序后 list_demo = [1, 2, 3, 4, 5, 8]
    降序排序后 list_demo = [8, 5, 4, 3, 2, 1]
    

    例二,

    # 为 key 参数准备调度函数
    def take_second(element):
        return element[1]
    
    
    list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]
    
    print('排序前 list_demo =', list_demo)
    list_demo.sort()  # 升序排序。元组作为列表的元素,排序是以元组的第一个元素进行比较。
    print('元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo =', list_demo)
    list_demo.sort(key=take_second)  # 升序排序。元组作为列表的元素,排序是以元组的第二个元素进行比较。
    print('元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo =', list_demo)
    
    

    运行结果:

    排序前 list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]
    元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo = [(1, 3), (2, 4), (3, 5), (5, 1)]
    元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo = [(5, 1), (1, 3), (2, 4), (3, 5)]
    

    6.2 使用 sorted() 内置函数排序

    从一个可迭代对象构建一个新的排序列表,要使用sorted()内置函数。

    使用格式如下所示:

    sorted(iterable, * ,key=None, reverse=False)
    

    对以上格式说明,

    • 返回值:sorted()内置函数会根据 iterable 中的项返回一个新的已排序列表。
    • 具有两个可选参数,它们都必须指定为关键字参数。
    • key: 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)。
    • reverse :为一个布尔值。默认为False,表示升序排序。 如果设为 True,则每个列表元素将按反向顺序(降序)比较进行排序。

    举例如下所示:

    # 为 key 参数准备调度函数
    def take_second(element):
        return element[1]
    
    
    list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]
    
    print('排序前 list_demo =', list_demo)
    new_list1 = sorted(list_demo, key=None)  # 升序排序。元组作为列表的元素,排序是以元组的第一个元素进行比较。
    print('元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo =', new_list1)
    new_list2 = sorted(list_demo, key=take_second)  # 升序排序。元组作为列表的元素,排序是以元组的第二个元素进行比较。
    print('元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo =', new_list2)
    
    

    运行结果:

    排序前 list_demo = [(1, 3), (3, 5), (2, 4), (5, 1)]
    元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo = [(1, 3), (2, 4), (3, 5), (5, 1)]
    元组作为列表的元素,排序是以元组的第一个元素进行比较 list_demo = [(5, 1), (1, 3), (2, 4), (3, 5)]
    

    7 文章其他地址

    7.1 微信公众号:码农阿杰

    7.2 CSDN 博客

    8 参考资料

    8.1 Python 3.8.2 documentation

  • 相关阅读:
    白名单执行payload之rundll32
    java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonNode
    Redis key过期监听
    Kafka拦截器
    常用工具类
    Redis Pipelining
    Redis 发布订阅(Pub/Sub)
    Redis Stream
    模拟Spring自实现监听器
    Jackson
  • 原文地址:https://www.cnblogs.com/manongajie/p/12831060.html
Copyright © 2020-2023  润新知