6.列表
6.1 序列
6.1.1 基本概念
- 是一种数据结构,是计算机中存储数据的一种方式。
- 不同的方式,就是一种不同的数据结构。
- 序列保存一组有序的数据,在数据当中有一个“位置”,称之为索引,按添加的顺序从0开始分配。
6.1.2 序列的分类
- 可变序列
如:列表 - 不可变序列
如:字符串,整数,元组
6.2 列表的定义和作用(list)
列表是Python中的一个对象,表现方式:list。
作用:可以保存多个有序的数据。
6.3 列表快速入门
- 创建空列表[]
### 创建空列表[]
lst = []
print(lst,type(lst)) ### [] <class 'list'>
- 元素
元素:列表里存储的数据,称之为“元素”。
向列表里添加多个元素,元素之间为英文下的,分隔。
lst = [1,2,"Hello"]
print(lst,type(lst)) ### [1, 2, 'Hello'] <class 'list'>
- 存储对象
列表可以存储任意的对象,其元素可以是多种数据结构;且会按照插入的顺序存储。
第一个元素在第一个位置,第二个元素在第二个位置,依此类推。
lst = [1,"Python",True,None,[2,3,4],(5,6,7),{
"name":"Linda","sex":"女"}]
print(lst)
- 在列表中,通过索引(index)或下标获取列表中的元素;
索引从0开始,列表的第一个位置的索引就是0,依此类推。
超出索引最大位置就会报错:IndexError: list index out of range
lst = [10,20,30,40,50]
print(lst[0],lst[3]) ###10 40
print(lst[8]) #### IndexError: list index out of range
###len()函数可以获取列表的长度(或者列表元素的个数)
# print(lst[len(lst)]) ### IndexError: list index out of range
print(lst[len(lst)-1]) ### 50
- 列表的索引可以为负数,表示从右往左获取第1个、第2个、第3个元素…,依此类推;下标索引超出边界会报错IndexError: list index out of range
lst = [10,20,30,40,50]
print(lst[-1], lst[-2], lst[-4]) ###50 40 20
#print(lst[-8]) ### IndexError: list index out of range
6.4 切片
6.4.1 引入
切蛋糕,想切哪块切哪块。
与现实生活中切蛋糕的不同点在于,切片是从现有列表中,获取一个子列表,切片不影响原来的列表。
6.4.2 切片的语法
语法:列表[开始位置:结束位置:步长]
通过切片获取元素时,包括起始位置的元素,不包括结束位置的元素,即左闭右开[start:stop:step)。
切片结果:返回一个新的列表,不影响原有的列表。
hero = ["钢铁侠","葫芦娃","蜘蛛侠","黑寡妇","蚁人","美国队长"]
print(hero[0:2]) ### ['钢铁侠', '葫芦娃']
print(hero) ### 原列表 ["钢铁侠","葫芦娃","蜘蛛侠","黑寡妇","蚁人","美国队长"]
hero2= hero[0:2]
print(hero2) ### ["钢铁侠","葫芦娃"]
6.4.3 切片使用的综合案例
# """
# 案例:现在有a=[1,2,3,4,5,6],要求不通过函数的形式实现列表的反转[6,5,4,3,2,1],请写出推导过程。
# """
a=[1,2,3,4,5,6]
### 省略结束位置,则会从当前的开始位置一直截取到最后
print(a[0:]) ### [1, 2, 3, 4, 5, 6]
print(a[1:]) ### [2, 3, 4, 5, 6]
### 省略开始位置,则会从第一个元素开始到结束位置上的元素,不包括结束位置上的元素
print(a[:3]) ### [1, 2, 3]
### 开始位置和结束位置都省略,则会从第一个元素的开始到最后一个元素
print(a[:]) ### [1, 2, 3, 4, 5, 6]
### 步长可以理解为获取元素的间隔,默认值为1,可以省略
print(a[0:6:1]) ### [1, 2, 3, 4, 5, 6]
print(a[0:6:2]) ### [1, 3, 5]
### 步长为0,报错:ValueError: slice step cannot be zero
#print(a[::0]) ### ValueError: slice step cannot be zero
#print(a[0:6:0]) ### ValueError: slice step cannot be zero<