列表初识
列表的作用和定义
列表是python中使用最频繁的数据类型,在其他语言中一般称为数组;
用一个变量存储多个数据;
列表存储多个数据时,在中括号之间用逗号分隔多个数据;
语法定义:
变量名 = [数据1, 数据2, 数据3,...]
eg:
name_list = ["zhangsan", "lisi", "wangwu"]
列表存储数据的方式和取数据
- 列表按顺序存储数据,从0开始,逐渐递增的存,你可以理解为琅琊榜中琅琊阁的信息柜,一个一个存过去,并且给柜子从0开始编号,每次+1;
- 取数据的时候只需要按照柜子编号取即可;
- 列表的索引从0开始,索引就是数据在列表中的数据编号,索引又可以被称为下标。从列表中取值时,如果超出索引范围,就会报错。
定义和取数据示例如下(在交互式下):
name_list = ["zhangsan", "lisi", "wangwu"]
name_list
['zhangsan', 'lisi', 'wangwu']
name_list[0]
'zhangsan'
name_list[1]
'lisi'
列表方法
列表方法查看
在ipython3交互式下,先定义一个空列表;再 空列表. 后面敲一下tab键,即可显示列表常用方法;例如:
In [1]: name_list = []
In [2]: name_list.
name_list.append name_list.count name_list.insert name_list.reverse
name_list.clear name_list.extend name_list.pop name_list.sort
name_list.copy name_list.index name_list.remove
In [2]: name_list.
由此可见,列表方法有如下这些:
name_list.append name_list.count name_list.insert name_list.reverse
name_list.clear name_list.extend name_list.pop name_list.sort
name_list.copy name_list.index name_list.remove
列表常用方法统计
序号 | 分类 | 关键字/函数/方法 | 说明 |
---|---|---|---|
1 | 增加 | list.insert(index, data) | 在指定位置插入数据 |
list.append(data) | 在末尾追加数据 | ||
list.extend(list2) | 将列表2的数据追加到列表 | ||
2 | 修改 | list[index]=data | 修改指定索引的数据 |
3 | 删除 | del list[index] | 删除指定索引的数据 |
list.remove(data) | 删除第一个出现的指定数据 | ||
list.pop() | 删除末尾数据 | ||
list.pop(index) | 删除指定索引数据 | ||
list.clear() | 清空列表 | ||
4 | 统计 | len(list) | 测量列表长度 |
list.count(data) | 检查数据在列表中出现的次数 | ||
5 | 排序 | list.sort() | 升序排序 |
list.sort(reverse=True) | 降序排序 | ||
list.reverse() | 逆序,反转 |
列表取值和取索引(index)
name_list = ["zhangsan", "lisi", "wangwu"]
# 列表取值,已知 内容在列表的位置(索引),根据索引来取值;注意,如果索引值超过范围的话,就会报错
print(name_list[2])
# 列表取索引,已知 内容,根据内容来确定内容在列表的位置;
# 注意,如果查的内容不是列表中的内容的话,就会报错
print(name_list.index("lisi"))
列表 修改指定索引的数据
name_list = ["zhangsan", "lisi", "wangwu"]
# 修改指定索引的数据;注意,如果索引超过了范围,就会报错,而不是在末尾新建一个数据,那是append该做的事
name_list[2] = "wangliu"
print(name_list)
列表增加(append,insert,extend)
1.append
name_list = ["zhangsan", "lisi", "wangwu"]
# 3.1 append 在列表末尾追加
name_list.append("liudi")
print(name_list) # ['zhangsan', 'lisi', 'wangwu', 'liudi']
2.insert
name_list = ["zhangsan", "lisi", "wangwu"]
#3.2 insert 向列表指定索引位置添加数据,注意,不是进行替换,只是挤进去而已
print(name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.insert(1, "xiaoming")
print(name_list) # ['zhangsan', 'xiaoming', 'lisi', 'wangwu']
3.extend
# 3.3 extend 向列表末尾分散的追加另一个列表的所有内容,注意是分散的追加
hero_list = ["hanxin", "zhangfei", "zhuge"]
print(name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.extend(hero_list)
print(name_list) # ['zhangsan', 'lisi', 'wangwu', 'hanxin', 'zhangfei', 'zhuge']
列表删除数据(remove,pop,clear)
1.remove
name_list = ["zhangsan", "lisi", "wangwu"]
# 4.1 remove 删除列表中指定的数据,注意,输入的要删除的数据必须在列表内,否则会报错
# 如果列表中存在两个相同的元素时,remove方法会删除第一个出现的元素
print(name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.remove("zhangsan")
print(name_list) # ['lisi', 'wangwu']
2.pop
name_list = ["zhangsan", "lisi", "wangwu"]
# 4.2 pop 默认删除列表最后一个数据,也可以删除指定索引的数据,指定索引时,不能超过范围,否则报错
print(name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.pop()
print(name_list) # ['zhangsan', 'lisi']
name_list.pop(2)
print(name_list) # ['lisi']
3.clear
name_list = ["zhangsan", "lisi", "wangwu"]
# 4.3 clear 清空列表
print(name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.clear()
print(name_list) # []
del关键字删除列表元素和del注意事项
name_list = ["zhangsan", "lisi", "wangwu"]
# 使用del关键字可以删除列表中的元素;但在日常开发中,如果要删除列表中的元素,建议使用列表提供方法。
del name_list[1]
print(name_list) # ['zhangsan', 'wangwu']
# del关键字的本质是将变量从内存中删除
name = "xiaoming"
print(name)
del name
# print(name) # del将变量删除后,变量就无效了,不能再被调动,否则报错,所以本行必须被删除
列表统计(len,count)
1.len
name_list = ["zhangsan", "lisi", "wangwu"]
# len 统计列表中元素的个数
list_num1 = len(name_list)
print("列表中元素的个数为:", list_num1)
name_list.append("zhangsan")
list_num2 = len(name_list)
print("列表中元素的个数为:", list_num2)
2.count
name_list = ["zhangsan", "lisi", "wangwu"]
# count 统计列表中某一元素出现的个数
times = name_list.count("zhangsan")
print("列表中zhangsan出现的次数为:", times)
列表的升降序和逆序(反转) (sort,reverse)
升序sort
name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [2, 4, 1, 3, 8]
name_list.sort()
print("升序后姓名列表:", name_list) # ['lisi', 'wangwu', 'zhangsan']
print("升序前数字列表:", num_list) # [2, 4, 1, 3, 8]
num_list.sort()
print("升序后数字列表:", num_list) # [1, 2, 3, 4, 8]
降序sort
name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [2, 4, 1, 3, 8]
print("降序前姓名列表:", name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.sort(reverse=True)
print("降序后姓名列表:", name_list) # ['zhangsan', 'wangwu', 'lisi']
print("降序前数字列表:", num_list) # [2, 4, 1, 3, 8]
num_list.sort(reverse=True)
print("降序后数字列表:", num_list) # [8, 4, 3, 2, 1]
逆序reverse
name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [2, 4, 1, 3, 8]
print("逆序前姓名列表:", name_list) # ['zhangsan', 'lisi', 'wangwu']
name_list.reverse()
print("逆序后姓名列表:", name_list) # ['wangwu', 'lisi', 'zhangsan']
print("逆序前数字列表:", num_list) # [2, 4, 1, 3, 8]
num_list.reverse()
print("逆序后数字列表:", num_list) # [8, 3, 1, 4, 2]
应注意,无论是升降序还是逆序,都是直接对原列表做修改的,而不是临时修改
列表其他扩展
关键字,函数和方法的区别
关键字
关键字是Python内置的,具有特殊意义的标识符;
关键字比如del,直接使用,后面无需括号。
import keyword
print(keyword.kwlist)
"""
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue','def', 'del',
'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
"""
函数
函数封装了独立功能,可以直接调用;
函数的调用:
# 函数名(参数)
例如:print("hello world")
方法
方法和函数类似,封装了独立功能;
与函数不同的是,方法需要通过对象调用,表示针对这个对象要做的操作。
方法的使用:
# 对象.方法名()
例如:namelist.pop()
循环遍历
列表遍历就是 从头到尾 依次从列表中取数据;
每次循环都将 从列表中顺序的读取出来的数据放在临时变量中,然后执行相同的操作。
使用for进行迭代遍历。
遍历语法格式:
for 临时变量 in 列表:
针对临时变量进行的操作
遍历示例:
name_list = ["zhangsan", "lisi", "wangwu"]
for i in name_list:
print("本次读取的名字为:", i)
列表的应用场景
虽然python的列表可以存储不同的数据类型,比如同时存储字符串和数字;但在实际开发中,通常都是存储的同一类数据类型,然后通过迭代遍历列表中的数据,做相同的操作。