内容概要
• 1. 序列
• 1.1 基本概念
• 1.2 序列的分类
• 2. 列表(list)
• 2.1 列表的使用
• 2.2 切片
• 3. 通用操作
• 4. 修改列表
• 5. 列表的方法
• 6. 遍历列表
• 6.1 for循环
• 6.2 range()函数
1. 序列(sequence)
1.1 基本概念
• 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
• 数据结构指计算机中数据存储的方式
1.2 序列的分类
• 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
• 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
2. 列表(list)
• 列表是Python中的一个对象
[1,2,3] #被中括号包裹住的就是列表,里边的元素是列表元素,可以是任意类型
• 列表的作用
• 列表中可以保存多个有序的数据
• 列表是用来存储对象的对象
[1,2,3] #1是对象 而列表本身也是对象,存储着1 也就是存储对象的对象
2.1 列表的使用
• 列表的创建:通过[]来创建一个空列表
['任意元素',1,3.14]
2.2 切片
• 切片是指从现有列表中获得一个子列表
• 通过切片来获取指定的元素
• 语法: 列表[起始 : 结束 : 步长]
列表中的元素有对应的下标,和c语言数组相似,列表索引从0开始对应第一个元素,-1对应最后一个元素(末尾元素)
[1,2,3,4,5] [1,2,3,4,5]
0 1 2 3 4 -5 -4 -3 -2 -1
正向索引 反向索引
• 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
• 起始位置和结束位置的索引可以不写
• 如果省略结束位置, 则会从当前的开始位置一直截取到最后
• 如果省略开始位置, 则会从第一个元素截取到结束的元素,但是不包括结束的元素
• 如果开始位置和结束位置都省略, 则则会从第一个元素开始截取到最后一个元素
• 步长表示每次获取元素的间隔,默认是1(可以省略不写)
• 步长不能是0,但可以是是负数
a=[1,2,3,4,5,6]
#省略结束位置
a[1:] #从索引1开始一直截到最后
#[2, 3, 4, 5, 6]
#省略开始位置
a[:-1] #从第一位开始一直到-1结束,但是不包括-1,因为到-1已经结束了。
#[1, 2, 3, 4, 5]
#省略开始和结束
a[:] #可以 b=a[:]复制
#[1, 2, 3, 4, 5, 6]
#步长是正数
a[1:-1:2]
'''步长默认为1,即一次走一步,也就是一个元素,步长为2就是两步,落脚点就是
取到的值,取到索引1位置的值(对应的值为2)然后开始走,第一步到索引2的位置(对
应的值为3),接下来第二步到索引3的位置,此时索引3就是落脚点,取到的也就是索
引对应的值 4,一以此类推一直到元素结束,
你可能会困惑,4再往下两步是6,为什么没有呢?
因为上方贴片操作是从1位置开始到-1的位置结束,当到-1的时候,
可以理解成是跳出循环,到-1的时候就跳出循环了,所以没有包含到当中'''
#[2, 4]
#步长是负数
a[-1:0:-2]
#从索引-1的位置,每次走两步,到0结束,(和上方同理,)
#上方是正着走,这个是倒着走,也就是倒序
#[6, 4, 2]
3. 通用操作
• + 和 *
• + 可以将两个列表拼接成一个列表
a=[1,2,3]
b=[4,5,6]
a+b #123456
• * 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
a=[1,2,3]
print(a*3)
#123 123 123
• in 和 not in
• in用来检查指定元素是否在列表当中
• not in 用来检查指定元素是否不在列表当中
• len() 获取列表中元素的个数
#列表元素有多少个长度就是多少
• max() 获取列表中最大值
• min() 获取列表中最小值
• list.index(x[, start[, end]])
• 第一个参数 获取指定元素在列表中的位置
• 第二个参数 表示查找的起始位置
• 第三个参数 表示查找的结束位置
a=[1,2,1,2,3]
a.index(1,1,-1) #从索引1的位置开始到-1结束的位置查找1对应的索引
# 2 从索引1的位置开始,索引0位置的0就被忽略了,查找到的是索引2位置的1
#如果没有添加起始位置和结束位置的参数,就会返回查找到的第一个元素的索引
• list.count(x) 统计指定元素在列表中出现的个数
a=[1,2,1,2,3]
a.count(1)
#2 两次
4. 修改列表
• 通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列)
• 当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致
• 通过切片来删除元素
• del list[起始 : 结束]
a=[1,2,3,4,5,6,7]
a[2:-2]=['a','b','c']
#[1, 2, 'a', 'b', 'c', 6, 7]
a=['a','b','c','d','e','f']
a[2:-2] #除2到-3(到-2结束)以外的元素都会被删除
#['c', 'd']
• list = []
5. 列表的方法
• append() 像列表的最后添加一个元素
a=['a','b','c','d','e','f']
a.append('g')
#['a','b','c','d','e','f','g']
• insert(arg1,arg2) 像列表指定位置插入一个元素 参数1:要插入的位置 参数
2:要插入的元素
a=['a','b','c','e','f']
a.insert(3,'d')
# ['a', 'b', 'c', 'd', 'e', 'f']
• extend(iterable) 使用一个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递一个序列
a=['a','b','c']
b=['d','e','f']
a.extend(b)
# ['a', 'b', 'c', 'd', 'e', 'f']
#使用b扩展a序列
• pop() 根据索引删除并返回指定元素
a=[1,2,3,4,5,6]
b=a.pop(1)
#b=2
• remove() 删除指定元素 (如果相同值的元素有多个,只会删除第一个)
a.remove(1)
#a=2,3,4,5,6
• reverse() 翻转列表
• sort(key=None,reverse=False) 用来对列表中的元素进行排序 reverse:True反序;False 正序
a=[1,2,3,4,5,6]
a.sort(reverse=True)
#[6, 5, 4, 3, 2, 1]
#如果sort不加参数,则数字会按照从小到大排列,则字母会按照特定的值排列,
#a为最小 z为最大
a=['z', 'c', 'd', 'e','a', 'f']
a.sort()
#a=['a', 'c', 'd', 'e', 'f', 'z']
- 遍历列表
6.1 for循环
• 通过for循环来遍历列表
语法
for 变量 in 序列(遍历的规则):
代码块
• 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
a=[1,2,3,4,5,6]
for i in a:
print('第%s次循环' %i)
print('本次循环变量的值为%s'%(i))
#输出
第1次循环
本次循环变量的值为1
第2次循环
本次循环变量的值为2
第3次循环
本次循环变量的值为3
第4次循环
本次循环变量的值为4
第5次循环
本次循环变量的值为5
第6次循环
本次循环变量的值为6
a=['张三','李四','小明']
for i in a:
print('你好,'+i+'很高兴认识你')
#输出
你好,张三很高兴认识你
你好,李四很高兴认识你
你好,小明很高兴认识你
6.2 range(start, stop[, step])
参数说明
• ·start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
• stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
• step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
for i in range(0,5): #从0开始到5时就结束,所以不包含5
print(i)
#输出
0
1
2
3
4
#有步长 取出1到10之间的奇数
for i in range(1,11,2): #和切片步长同理,从1开始每次走两步取值
#走第一步,此时元素是2,再走一步就是3
#1往下两步就是3,以此类推,一直到元素结束
print(i)
#输出
1
3
5
7
9