第六节:列表
序列
- 基本概念
序列是Python中最基本的⼀种数据结构。序列⽤于保存⼀组有序的数据,所 有的数据在序列当中都有⼀个唯⼀的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
数据结构指计算机中数据存储的⽅式 - 序列的分类
可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
列表
列表是Python中的⼀个对象
列表的作⽤:列表中可以保存多个有序的数据;列表是⽤来存储对象的对象
- 列表的使用
列表的创建:通过[]来创建⼀个空列表
列表可以通过索引(index)或者下标来获取列表中的元素;索引是从0开始的,如print(list[0]),当list[负数],-1是最后一个,然后从右往左。 - 切片
切⽚是指从现有列表中获得⼀个⼦列表;通过切⽚来获取指定的元素
语法: 列表[起始 : 结束 : 步⻓] 通过切⽚获取元素时,会包括起始位置的元素,不会包括结束位置的元素即左闭右开
起始位置和结束位置的索引可以不写:
如果省略结束位置, 则会从当前的开始位置⼀直截取到最后
如果省略开始位置, 则会从第⼀个元素截取到结束的元素,但是不包括结束的元素
如果开始位置和结束位置都省略, 则会从第⼀个元素开始截取到最后⼀个元素
步⻓表示每次获取元素的间隔,默认是1(可以省略不写)
步⻓不能是0,但可以是负数,如[ : :-1]
通用操作
- + 和 *
+ 可以将两个列表拼接成⼀个列表
+ * 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
list1=[1,2,3]+[1,2,3]
list2=2*[1,2,3]
- in和not in 用来检查指定元素是否在/不在列表中,输出的是布尔值(false或true)
- len()求列表的长度
- max() 求列表中的最大值
- min() 求列表中的最小值
- list.index(元素) 指定元素在列表中的位置
例如:
list=[2,3,4,5,6,4,2,4]
print(list.index(2))
index默认找第一个被索引的元素位置
还可以通过list.index(元素,a,b),a是开始位置,b是结束位置
7. list.count() 是指定元素在列表中出现的次数
例如:
list=[2,3,4,5,6,4,2,4]
s='Before the sunset'
print(list.count(2))
print(s.count('e'))
修改列表
- 通过索引复制来修改
list[5]=替换元素 - 通过切⽚来修改(起始就是给切⽚的内容重新赋值,但是赋值的内容必须是⼀个序列或列表)
当设置了步⻓时,序列中元素的个数必须和切⽚中元素的个数保持⼀致
list = [起始:结束]=字符串或者列表
- 删除元素:
del list[起始 : 结束]
list[a:b]=[] #等于空即删除切片处的元素,只适用于可变序列即列表,字符串不行
s='python'
# s[0]='j' 会报错,因为字符串是不可变序列,不适用
s=list(s)#将s变成可变序列,即转换为列表
s[0]='j'
列表的方法
- append() 像列表的最后添加⼀个元素
list=[2,3,4,5,6,4,2,4]
list[8:8]=5 #在最后插入一个数值
list.append(5)
- insert(arg1,arg2) 像列表指定位置插⼊⼀个元素 参数1:要插⼊的位置 参数 2:要插⼊的元素
list=[2,3,4,5,6,4,2,4]
list[8:8]=5 #在最后插入一个数值
list.insert(7,5)
- extend( i t e r a b l e ) 使⽤⼀个新的序列来扩展当前序列(它会将该序列的中元素 添加到列表中) 参数需要传递⼀个序列
它和列表‘+’的区别是,‘+’只能相同类型的相加,字符串和列表就不能相加;而extend可以
list=[2,3,4,5,6,4,2,4]
list.extend([7])#等价于list+=[7]
print(list)
- clear()清空序列
- pop() 根据索引删除并返回指定元素
list=[2,3,4,5,6,4,2,4]
lst=list.pop(4)#删除列表中的6,并返回到lst中,及lst=6
print(list)
- remove() 删除指定元素 (如果相同值的元素有多个,只会删除第⼀个)无返回值
list=[2,3,4,5,6,4,2,4]
list.remove(4)#删除列表中的第一个4
print(list)
- reverse() 翻转列表
- sort(key=None,reverse=False) ⽤来对列表中的元素进⾏排序 reverse=True反序;=False 正序
list=[2,3,4,5,6,4,2,4]
list.sort() 或者list.sort(reverse=False)#给列表从小到大排列
list.sort(reverse=True)#给列表降序
print(list)
遍历列表
- for循环
通过for循环来遍历列表
语法:
for 变量 in 序列(遍历的规则):
代码块
list=[2,3,4,5,6,4,2,4]
for h in list:
print(h)
- 注意: for循环的代码块会执⾏多次,序列中有⼏个元素就会执⾏⼏次。每执⾏⼀次就会将序列中的⼀个元素赋值给变量,所以我们可以通过变量来获取列表
中的元素
- 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(5):
print(hello world)
练习题
- 给用户9次机会 猜1 - 10 个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对。
lst=[1,2,3,4,5,6,7,8,9,10]
for l in range(len(lst)-1):
number=int(input('请输入一个数字'))
print('您输入到的答案不正确')
for j in range(len(lst)-1):
if number==lst[j]:
del lst[j]
print('正确号码是',lst[0])