目录
1、列表的概念
(1)列表的定义
- 列表是Python中一种基本的数据结构。列表存储的数据,我们称为元素。在列表中的每个元素都会有一个下标来与之对应,第一个索引是0,第二个索引是1,依此类推的整数。
- 列表里可以同时储存不同的数据类型,列表里也可以嵌套列表(列表本身也是一种数据类型)。
- 对列表的操作包括通过索引下标查找展示,通过切片来获取指定部分列表数据。
- 列表中的对象都会按照插入的顺序存储到列表中,第一个插入的对象保存到第一个位置,第二个保存到第二个位置,则可以称之为列表中的数据有序。
- 列表是可变类型的数据类型,所以列表是有序的可变的元素集合。
(2)列表的应用场景
思考:有一个人的姓名TOM,怎么存储这个数据?
答:通过变量。
思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?
答:列表即可, 列表一次性可以存储多个数据。
(3)列表的定义格式
[数据1, 数据2, 数据3, 数据4......]
示例:
# 1、创建了一个空列表my_list = []# 查看列表的类型print(type(my_list)) # <class 'list'>""" 空列表只表示你再内存中开辟了一个空间 用于存储数据,但是现实里边没有任何数据。"""# 2、创建一个有数据的列表# 一个列表中可以存储多个元素,# 也可以在创建列表时,来指定列表中的元素# (1)创建一个只包含一个元素的列表my_list = [10]print(my_list)# (2)创建一个包含多个元素的列表# 多个元素之间使用,隔开my_list = [10,20,30,40,50]print(my_list)# 3、列表中可以保存任意的对象,包括函数。# 结果:[10, 'hello', True, None, [1, 2, 3], <built-in function print>]my_list = [10,'hello',True,None,[1,2,3],print]
注意: 可以说列表是用来存储对象的对象,列表可以存储所有的数据类型,包括函数都可以同时存储在一个列表中。 但是在我们日常开发中使用列表的时候,一个列表中尽量存储相同的数据类型。 因为不同的数据类型的操作方法是不同的,将来如果要对列表中的数据进行操作,就需要判断各种数据的类型,然后在操作数据,这样就非常麻烦了。
2、列表的常用操作
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。
(1)列表的查找
1)通过下标查找
我们可以通过索引(index)来获取列表中的元素。
索引是元素在列表中的位置,列表中的每一个元素都有一个索引,索引是从0开始的整数,列表第一个位置索引为0,第二个位置索引为1,第三个位置索引为2,以此类推。
name_list = ['Tom', 'Lily', 'Rose']print(name_list[0]) # Tomprint(name_list[1]) # Lilyprint(name_list[2]) # Rose# 如果使用的索引超过了最大的范围,会抛出异常。# IndexError: list index out of rangeprint(name_list[3]) # 异常
提示:列表的下标(索引)和字符串下标(索引)的用用法是一样的。包括正负取值,可以参考着字符串一起学习,这里不在通过列表在说明了。
2)通过方法查找
@1、index()方法
index()方法:返回指定数据所在位置的下标 。
(用法同字符串中index()方法的用法一样)
语法:
列表序列.index(数据, 开始位置下标, 结束位置下标)
快速体验:
name_list = ['Tom', 'Lily', 'Rose']print(name_list.index('Lily', 0, 2)) # 1
注意:如果查找的数据不存在则报错。
@2、count()方法
count()方法:统计指定数据在当前列表中出现的次数。
(用法同字符串中count()方法的用法一样)
name_list = ['Tom', 'Lily', 'Rose']print(name_list.count('Lily')) # 1
@3、len()方法
len()方法:获取列表的长度,即列表中元素的个数。(是一个通用方法)
name_list = ['Tom', 'Lily', 'Rose']name_list_len = len(name_list)print(name_list_len) # 3
注意: 获取到的长度的值,是列表的最大索引+1。所以以后在用到列表的最大索引的时候,使用len()-1。
3)判断是否存在
这两个方法都是公共方法,代表列表,元祖,字典,字符串都支持的操作。
@1、in
in:判断指定数据是否存在于列表中,如果在返回True,否则返回False
name_list = ['Tom', 'Lily', 'Rose']# 结果:Trueresult = 'Lily' in name_listprint(result)# 结果:Falseresult1 = 'Lilys' in name_listprint(result1)
@2、not in
not in:判断指定数据是否不在某个列表序列,如果不在返回True,否则返回False。
name_list = ['Tom', 'Lily', 'Rose']# 结果:Falseresult = 'Lily' not in name_listprint(result)# 结果:Trueresult1 = 'Lilys' not in name_listprint(result1)
示例:
需求:判断用户输入的名字是否已经存在,如果存在,提示用户已存在,否则提示可以注册。
name_list = ['Tom', 'Lily', 'Rose']name = input('请输入您要搜索的名字:')if name in name_list: print(f'您输入的名字是{name}, 名字已经存在')else: print(f'您输入的名字是{name}, 名字不存在')
(2)列表的增加
作用:增加指定数据到列表中。
@1、append()方法
append()方法:向列表的结尾添加一个元素。
1)语法
列表序列.append(数据)
2)示例
"""输出结果:修改前: ['Tom', 'Lily', 'Rose']修改后: ['Tom', 'Lily', 'Rose', '孙悟空']"""name_list = ['Tom', 'Lily', 'Rose']print("修改前:", name_list)name_list.append('孙悟空')print("修改后:", name_list)
注意一点,列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。
3)追加一个序列
如果append()方法追加的数据是一个序列,则追加整个序列到列表的结尾。
"""输出结果:修改前: ['Tom', 'Lily', 'Rose']修改后: ['Tom', 'Lily', 'Rose', ['孙悟空', '猪八戒']]"""name_list = ['Tom', 'Lily', 'Rose']print("修改前:", name_list)name_list.append(['孙悟空','猪八戒'])print("修改后:", name_list)
@2、extend()方法
extend()方法:列表结尾追加数据,数据一定是一个序列,则把数据序列里面的数据拆,开然后逐一追加到列表的结尾。
1)语法
列表序列.extend(数据)
2)快速体验
name_list = ['Tom', 'Lily', 'Rose']"""1、单个数据输出结果:修改前: ['Tom', 'Lily', 'Rose']修改后: ['Tom', 'Lily', 'Rose', '孙', '悟', '空']"""print("修改前:", name_list)name_list.extend('孙悟空')print("修改后:", name_list)"""2、序列数据输出结果:修改前: ['Tom', 'Lily', 'Rose']修改后: ['Tom', 'Lily', 'Rose', '孙悟空', '猪八戒']"""name_list = ['Tom', 'Lily', 'Rose']print("修改前:", name_list)name_list.extend(['孙悟空','猪八戒'])print("修改后:", name_list)"""3、extend()方法和+=的效果是一样的输出结果:修改前: ['Tom', 'Lily', 'Rose']修改后: ['Tom', 'Lily', 'Rose', '孙悟空', '猪八戒']"""name_list = ['Tom', 'Lily', 'Rose']print("修改前:", name_list)name_list += (['孙悟空','猪八戒'])print("修改后:", name_list)"""4、传入非序列数据输出结果:异常:TypeError: 'int' object is not iterable"""name_list = ['Tom', 'Lily', 'Rose']print("修改前:", name_list)name_list.extend(123)print("修改后:", name_list)
@3、insert()方法
insert()方法:向列表的指定位置插入一个元素。
1)语法
列表序列.insert(位置下标, 数据)
2)快速体验
"""输出结果:修改前: ['Tom', 'Lily', 'Rose']修改后: ['Tom', '孙悟空', 'Lily', 'Rose']"""name_list = ['Tom', 'Lily', 'Rose']print("修改前:", name_list)name_list.insert(1, '孙悟空')print("修改后:", name_list)
(3)列表的删除
@1、del
del:可以通过del删除指定下标的数据。
1)语法
del 目标
2)快速体验
name_list = ['Tom', 'Lily', 'Rose']# 1、删除列表# 结果:报错提示:name 'name_list' is not defined# 证明name_list列表被删除,已经不存在了。del name_listprint(name_list)# 2、删除指定数据# 删除索引为1的元素"""输出结果:删除前: ['Tom', 'Lily', 'Rose']删除后: ['Tom', 'Rose']"""name_list = ['Tom', 'Lily', 'Rose']print("删除前:", name_list)del name_list[1]print("删除后:", name_list)
@2、pop()方法
pop()方法:删除指定下标的数据,如果不指定下标,默认删除最后一个数据,无论是按照下标还是删除最后一个数据,pop()方法都会返回这个被删除的数据。
1)语法
列表序列.pop(下标)
2)快速体验
"""1、默认删除最后一个数据输出结果:删除前: ['Tom', 'Lily', 'Rose']删除后: ['Tom', 'Lily']删除的数据: Rose"""name_list = ['Tom', 'Lily', 'Rose']print("删除前:", name_list)del_name = name_list.pop()print("删除后:", name_list)print("删除的数据:", del_name)"""2、删除指定下标的数据输出结果:删除前: ['Tom', 'Lily', 'Rose']删除后: ['Tom', 'Rose']删除的数据: Lily"""name_list = ['Tom', 'Lily', 'Rose']print("删除前:", name_list)del_name = name_list.pop(1)print("删除后:", name_list)print("删除的数据:", del_name)
@3、remove()方式
remove()方式:根据元素的值进行删除,移除列表中某个数据的第一个匹配项。该方法没有返回值。
1)语法
列表序列.remove(数据)
2)快速体验
"""输出结果:删除前: ['Tom', 'Lily', 'Rose', 'Tom']删除后: ['Lily', 'Rose', 'Tom']"""name_list = ['Tom', 'Lily', 'Rose', 'Tom']print("删除前:", name_list)name_list.remove('Tom')print("删除后:", name_list)
@4、clear()方法
clear()方法:清空列表。
示例:
"""输出结果:清空前: ['Tom', 'Lily', 'Rose']清空后: []"""name_list = ['Tom', 'Lily', 'Rose']print("清空前:", name_list)name_list.clear()print("清空后:", name_list)
(4)列表的修改
@1、修改指定下标数据
"""输出结果:修改前 ['Tom', 'Lily', 'Rose']修改后 ['孙悟空', 'Lily', 'Rose']"""name_list = ['Tom', 'Lily', 'Rose']print("修改前", name_list)name_list[0] = '孙悟空'print("修改后", name_list)
@2、reverse()方法
reverse()方法:逆置(反转)
"""输出结果:修改前: ['孙悟空', '猪八戒', '沙和尚', '唐僧']修改后: ['唐僧', '沙和尚', '猪八戒', '孙悟空']"""name_list = ['孙悟空','猪八戒','沙和尚','唐僧']print("修改前:", name_list)name_list.reverse()print("修改后:", name_list)
@3、sort()方法
sort()方法:排序
1)语法
列表序列.sort( key=None, reverse=False)
注意:reverse表示排序规则,reverse = True 降序,reverse = False 升序(默认)。 key选项是列表中如果有字典数据,按照字典的key进行排序的时候会用到。
2)快速体验
"""输出结果:修改前: [1, 5, 2, 3, 6, 8]修改后: [1, 2, 3, 5, 6, 8]"""num_list = [1, 5, 2, 3, 6, 8]print("修改前:", num_list)num_list.sort()print("修改后:", num_list)"""# 降序输出结果:修改前: ['a', 'j', 'j', 'a', 'f', 'a', 'o', 'u', 'i', 'g', 'h', 'a', 'd', 'j']修改后: ['u', 'o', 'j', 'j', 'j', 'i', 'h', 'g', 'f', 'd', 'a', 'a', 'a', 'a']"""num_list = list('ajjafaouighadj')print("修改前:", num_list)num_list.sort(reverse = True)print("修改后:", num_list)
(5)列表的复制
copy()方法
复制以后的对象,和原对象是独立,修改一个不会影响另一个。
"""输出结果:name_list列表: ['Tom', 'Lily', 'Rose']name_list2列表: ['Tom', 'Lily', 'Rose']"""name_list = ['Tom', 'Lily', 'Rose']name_list2 = name_list.copy()print("name_list列表:", name_list)print("name_list2列表:", name_list2)
注意:copy()方法字典也通用。
原文: https://www.cnblogs.com/liuyuelinfighting/p/14971121.html