文章目录
- 1.列表的简介
- 2.切片
- 3.通用操作
- 3.1 + 和 * 操作
- 3.2 in 、not in 操作
- 3.3 len()
- 3.4 min()、max()
- 3.4 index()、count()方法
- 4.序列
- 5.修改列表(可变序列)
- 5.1. 通过索引修改
- 5.2. 通过切片修改
- 6.列表的方法
- 6.1 append()
- 6.2 insert()
- 6.3 extend()
- 6.4 clear()
- 6.5 pop()
- 6.6 remove()
- 6.7 reverse()
- 6.8 sort()
- 7.遍历列表
- 8.range
1.列表的简介
列表(list)是Python中的一个对象,列表中可以保存多个有序的数据。列表中存储的数据称为元素,一个列表可以存储多个元素。列表中可以存储任意的对象,但一般情况下一个列表只存一种类型的数据
- 列表的创建
列表的创建,通过 [ ] 来创建列表
列表中的元素会按照插入的顺序存储到列表中,第一个插入的数据就在第一位
my_list = [] # 创建了一个空列表
my_list = [10] # 创建了一个只有一个元素10的列表
my_list = [10,20,30,40] # 创建了多个元素的列表
my_list = [10,'Hello',True,None,[1,2,3],print] # 创建了多种元素的列表,不过一般不这样
- 列表数据操作
获取数据可以通过索引来获取,索引是元素在列表中的位置,列表中的每一个元素都有索引,索引是从0开始计数
注意: Python中的索引可以是 负数,如果索引是负数表示从后往前获取数据,例如:my_list[-1]表示获取倒数第一个元素
语法:my_list[0] #获取索引为0的元素
如果使用的索引超出了最大范围,程序会抛出异常
获取列表长度:len()
2.切片
切片指的是从现有列表中,获取一个子列表。
切片语法:列表[起始:结束:步长],表示从列表中指定的起始位置到结束为止之间的元素
- 步长表示每次获取元素的间隔,默认值是1,步长不能为0,但可以是负数,步长负数表示从列表的后面向前面取元素
- 如果省略起始位置,默认从第一个元素开始
- 如果省略结束位置,默认截取到最后一个元素
- 如果起始和结束位置都省略,相当于复制了整个列表
- 注意: 切片获取时会包括起始位置的元素,但是不会包括结束位置的元素
- 切片操作时会返回一个新的列表,不会影响原来的列表
# 创建列表
stus = ['张三','李四','王五','赵六']# 通过切片获取指定元素
stus[0,2]# 在stus列表中从位置索引值为0,1的元素
3.通用操作
3.1 + 和 * 操作
- + 表示列表的拼接
# 列表 + 操作
list = [1,2,3] + [7,8,9]
print(list)# 结果
[1, 2, 3, 7, 8, 9]***Repl Closed***
- * 表示将列表重复指定的次数
# 列表 * 操作
list = [1,2,3] * 3
print(list)# 结果
[1, 2, 3, 1, 2, 3, 1, 2, 3]***Repl Closed***
3.2 in 、not in 操作
- in 用来检查指定元素是否存在于列表中,如果存在返回True
# 创建列表
stus = ['张三','李四','王五','赵六','沈七','刘八']print('张三' in stus)# 结果
True***Repl Closed***
- not in 用来检查指定元素是否不在于列表中,如果不在返回True
# 创建列表
stus = ['张三','李四','王五','赵六','沈七','刘八']print('哈哈' not in stus)# 结果
True***Repl Closed***
3.3 len()
- len() 获取列表中元素的个数
# 创建列表
stus = ['张三','李四','王五','赵六','沈七','刘八']print(len(stus))# 结果
6***Repl Closed***
3.4 min()、max()
- min() 获取列表中最小的元素
- max() 获取列表中最大的元素
list = [1,2,5,7,9,6,45]print('最小元素:',min(list))
print('最大元素:',max(list))# 结果
最小元素: 1
最大元素: 45***Repl Closed***
3.4 index()、count()方法
- index() 获取指定元素在列表中第一次出现的位置索引,如果元素不在列表中会报错
- 语法结构:index(x,[i,j])
- x 表示要查找的元素,i 表示查找的起始位置,j 表示查找的结束位置,同样是包含 i 但是不包含 j 。
- 如果i和j不设置,默认查找第一次出现的位置索引
list = ['张三','李四','王五','赵六','沈七','刘八']index = list.index('赵六')
print('赵六的索引为:',index)# 结果
赵六的索引为: 3***Repl Closed***
- count() 统计指定元素在列表中的出现次数
list = ['张三','李四','王五','赵六','张三','沈七','刘八']count = list.count('张三')
print('张三出现的次数为:',count)# 结果
张三出现的次数为: 2***Repl Closed***
4.序列
序列(sequence)是Python中最基本的一种数据结构。数据结构指的计算机中数据存储的方式。
序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引),并且序列中的数据会按照添加的顺序来分配索引。
- 可变序列。可变序列指的是序列中的元素可以盖板,常见的有列表(list)
- 不可变序列。不可变序列指的是序列中的元素不能改变,常用的有字符串(str),元组(tuple)
5.修改列表(可变序列)
5.1. 通过索引修改
- 直接通过索引修改元素
# 创建列表
list = ['张三','李四','王五','赵六','张三','沈七','刘八']# 修改
list[0] = '哈哈'print('list列表第一个元素是:',list[0])# 结果
list列表第一个元素是: 哈哈***Repl Closed***
- 通过del删除元素
list = ['张三','李四','王五','赵六','张三','沈七','刘八']print('删除前,list列表是:',list)
# 删除
del list[0]print('删除后,list列表是:',list)# 结果
删除前,list列表是: ['张三', '李四', '王五', '赵六', '张三', '沈七', '刘八']
删除后,list列表是: ['李四', '王五', '赵六', '张三', '沈七', '刘八']***Repl Closed***
5.2. 通过切片修改
- 通过切片修改列表时,再给切片进行赋值时,只能使用序列。
list = ['张三','李四','王五','赵六','张三','沈七','刘八']print('切片前,list列表是:',list)
list[0:3] = 'ASDF'
# 注意
# list[0:0]=['沈万三'] 表示向索引为0的位置插入'沈万三'这个元素print('切片后,list列表是:',list)# 结果
切片前,list列表是: ['张三', '李四', '王五', '赵六', '张三', '沈七', '刘八']
切片后,list列表是: ['A', 'S', 'D', 'F', '赵六', '张三', '沈七', '刘八']***Repl Closed***
# list[::2] 当设置步长时,序列中的元素个数必须和切片中的元素个数一致,否则会报错list = ['张三','李四','王五','赵六','张三','沈七','刘八']
print('切片前,list列表是:',list)
list[::2] = 'ASDF'
print('切片后,list列表是:',list)# 结果
切片前,list列表是: ['张三', '李四', '王五', '赵六', '张三', '沈七', '刘八']
切片后,list列表是: ['A', '李四', 'S', '赵六', 'D', '沈七', 'F']***Repl Closed***
- 通过del删除
list = ['张三','李四','王五','赵六','张三','沈七','刘八']print('切片前,list列表是:',list)
del list[0:2] # 或者list[0:2] = []
print('切片后,list列表是:',list)# 结果
切片前,list列表是: ['张三', '李四', '王五', '赵六', '张三', '沈七', '刘八']
切片后,list列表是: ['王五', '赵六', '张三', '沈七', '刘八']***Repl Closed***
6.列表的方法
6.1 append()
- s.append() 向列表的最后添加一个元素
list = ['张三','李四','王五','赵六','沈七','刘八']print('原列表:',list)
list.append('哈哈')
print('新列表:',list)# 结果
原列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八']
新列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八', '哈哈']***Repl Closed***
6.2 insert()
- s.insert(i,x) 向列表指定位置 i 插入一个x元素
list = ['张三','李四','王五','赵六','沈七','刘八']print('原列表:',list)
list.insert(1,'哈哈')
print('新列表:',list)# 结果
原列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八']
新列表: ['张三', '哈哈', '李四', '王五', '赵六', '沈七', '刘八']***Repl Closed***
6.3 extend()
- s.extend(s) 需要一个序列 s 作为参数,会将该序列中的元素添加到当前列表中,相当于 += 操作
list = ['张三','李四','王五','赵六','沈七','刘八']print('原列表:',list)
list.extend('Hello World')
print('新列表:',list)# 结果
原列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八']
新列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八', 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']***Repl Closed***
6.4 clear()
- s.clear() 清空序列
list = ['张三','李四','王五','赵六','沈七','刘八']print('原列表:',list)
list.clear()
print('新列表:',list)# 结果
原列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八']
新列表: []***Repl Closed***
6.5 pop()
- s.pop(i) 根据索引删除并返回指定元素,如果 i 不赋值,则删除的是最后一个
list = ['张三','李四','王五','赵六','沈七','刘八']print('原列表:',list)
ret = list.pop(1)
print('新列表:',list)
print('pop:返回元素:',ret)# 结果:
原列表: ['张三', '李四', '王五', '赵六', '沈七', '刘八']
新列表: ['张三', '王五', '赵六', '沈七', '刘八']
pop:返回元素: 李四***Repl Closed***
6.6 remove()
- s.remove(x) 删除指定值的元素,如果有多个相同的指定元素,只删除第一个
list = ['张三','李四','王五','李四','赵六','沈七','刘八']print('原列表:',list)
list.remove('李四')
print('新列表:',list)# 结果
原列表: ['张三', '李四', '王五', '李四', '赵六', '沈七', '刘八']
新列表: ['张三', '王五', '李四', '赵六', '沈七', '刘八']***Repl Closed***
6.7 reverse()
- s.reverse() 将列表顺序反转
list = ['张三','李四','王五','李四','赵六','沈七','刘八']print('原列表:',list)
list.reverse()
print('新列表:',list)# 结果
原列表: ['张三', '李四', '王五', '李四', '赵六', '沈七', '刘八']
新列表: ['刘八', '沈七', '赵六', '李四', '王五', '李四', '张三']***Repl Closed***
6.8 sort()
- s.sort() 将列表中元素进行排序,默认升序
- s.sort(reverse=True) 将列表中元素进行降序排序
list = [1,-5,2,6,95,-4,5,1,21]print('原列表:',list)list.sort()
print('新列表升序:',list)list.sort(reverse = True)
print('新列表降序:',list)# 结果
原列表: [1, -5, 2, 6, 95, -4, 5, 1, 21]
新列表升序: [-5, -4, 1, 1, 2, 5, 6, 21, 95]
新列表降序: [95, 21, 6, 5, 2, 1, 1, -4, -5]***Repl Closed***
7.遍历列表
遍历列表指的就是将列表中的所有元素取出来
- 通过while循环处理(不常用)
list = ['张三','李四','王五','赵六','沈七','刘八']i= 0while i < len(list) : print(list[i])i += 1# 结果:
张三
李四
王五
赵六
沈七
刘八***Repl Closed***
- 通过for循环遍历
for循环的代码块会执行多次,序列中有几个元素就会执行几次,每执行一次就会将序列中的一个元素赋值给变量,所以可以通过变量获取元素
# for循环语法:
for 变量 in 序列 : 代码块list = ['张三','李四','王五','赵六','沈七','刘八']for s in list : print(s)# 结果:
张三
李四
王五
赵六
沈七
刘八***Repl Closed***
8.range
range(i,j,k) 是一个函数,可以用来生成一个自然数的序列。这个函数需要三个参数分别表示
- 起始位置(可省略,默认0)、
- 结束位置、
- 步长(可省略,默认1,可以为负数)
通过range可以创建一个执行指定次数的for循环
a = range(5)
b = range(0,5)
c = range(0,5,2)
d = range(0,5,-1)
e = range(5,0,-1)print('a:',list(a))
print('b:',list(b))
print('c:',list(c))
print('d:',list(d))
print('e:',list(e))# 结果:
a: [0, 1, 2, 3, 4]
b: [0, 1, 2, 3, 4]
c: [0, 2, 4]
d: []
e: [5, 4, 3, 2, 1]***Repl Closed***
# 执行次数为5次 for循环
for i in range(5) : print(i)