一、列表使用【重点掌握】
1.概念
变量:使用变量存储数据,但是,缺点:一个变量每次只能存储一个数据
思考:如果一次性存储多个数据,怎么做?
实际问题:存储5个人的年龄,求他们的平均年龄,按照以前的方式解决:
age1 = 10
age2 = 18
age3 = 9
age4 = 15
age5 = 20
average = (age1 + age2 + age3 + age4 + age5) / 5继续思考:如果要存储100,甚至1000个人的年龄呢?
解决方案:此时采用定义变量的方式会显得很麻烦,而Python提供了一种解决方案,使用列表进行多个数据的存储
作用:列表相当于是一个容器,可以同时存储多个数据
本质:列表是一个有序的集合
说明:有序指的就是有顺序【数据的存放的顺序和底层存储的顺序是相同的】
2.基本使用
2.1定义列表
1.定义列表
列表是一种数据类型,定义列表相当于定义一个列表的变量
语法:列表名 = [数据1....]
说明:列表使用list表示,但是,列表名不要直接使用list【list()】,建议listxxx或者xxxlist
a.定义空列表
list1 = []
print(list1)
b.定义非空列表
*注意:列表是有序的集合,数据的存放顺序和内存中的存储顺序相同
list2 = [34,6,56,57,7]
print(list2)
c.列表中可以存储重复数据
list3 = [22,33,44,22,22,22,22]
print(list3)
d.列表中可以同时存储不同类型的数据
list4 = ["hello",10,45.9,True]
print(list4)
2.2列表元素获取
2.列表元素的访问
"""
注意:
a.列表中存储的数据被称为元素
b.列表是有序的,所以列表中的元素被依次进行了编号,编号从0开始,
这个编号被称为索引,下标或者角标
c.索引的取值范围:
0 ~ 列表元素个数 - 1
-1 ~ -(元素个数)
d.如果超出索引的范围,则会报错IndexError
"""
nameList = ["tom","jack","bob","rose","zhangsan"]
print(nameList)
a.获取元素
语法:列表名[索引]
n1 = nameList[2]
print(n1)
print(nameList[2])
print(nameList[4])
*注意1:如果使用了超出范围的下标,则会报错
print(nameList[10]) #IndexError: list index out of range 索引越界
*注意2:下标的表示可以使用正数【从左向右】,也可以使用负数【从右向左】
print(nameList[-1])
print(nameList[-5])
#print(nameList[-6]) #IndexError: list index out of range
nameList = ["tom","jack","bob","rose","zhangsan"]
print(nameList)
b.修改元素
语法:列表名[索引] = 值
print(nameList[1])
nameList[1] = "蔡徐坤" #注意:修改列表元素相当于给变量重新赋值
print(nameList[1])
print(nameList)
#结论:列表是一种可变的数据类型,其中的元素可以随时修改
2.3列表基本操作
列表基本操作
#1.列表组合:+
list1 = [2,3,4]
list2 = [7,8]
print(list1 + list2)
print(list1)
#2.列表元素的重复:*
print(list1 * 3)
print(list1)
#结论:列表组合和列表元素的重复都是生成了一个新的列表,对原列表没有任何影响
print("=" * 30)
#3.判断元素是否在列表中:
# a.成员运算符【in , not in】,一般结合if语句和for循环使用
list3 = [2, 3, 4, 7, 8]
print(3 in list3) #True
print(6 in list3) #False
print(3 not in list3) #False
print(6 not in list3) #True
if 3 in list3:
print("3在列表中")
# b.身份运算符【is , is not】,判断两个变量的地址是否是同一个
a = 10
b = 10
print(a is b) #True
list1 = [1,2,3]
list2 = [1,2,3]
print(list1 is list2) #False
print(list1 == list2) #True
"""
注意:
a.变量中实际存储的是地址
比如:10的地址假设为:2343455
a和b中存储的是2343455
list1和list2是两个容器,只是其中的内容相同
2.4列表切片
4.列表切片
概念:通过开始下标,结束下标以及步长获取一个子列表
语法:列表名[start:end:step]
a.start可以省略,默认从0开始
b.end可以省略,默认为最后一个下标
c.step可以省略,默认为1
d.可以根据具体的情况选择性省略
e.注意:前闭后开区间【包头不包尾】
list1 = [11,22,33,44,55,66,77,88,99]
a.获取指定区间,而且下标都是正数,省略step
sublist1 = list1[1:4] #指定区间
sublist1 = list1[1:] #从指定下标开始到结尾
sublist1 = list1[:4] #从开头到指定下标
b.获取指定区间,而且下标都是正数,定义step
sublist1 = list1[1:4:2]
sublist1 = list1[1::2]
sublist1 = list1[:4:2]
list1 = [11,22,33,44,55,66,77,88,99]
c.获取指定区间,而且下标都是负数
sublist1 = list1[-1:-4] #[]
sublist1 = list1[-1:] #只获取最后一个元素
sublist1 = list1[:-4] #[11, 22, 33, 44, 55]
sublist1 = list1[-1:-4:-1]
print(sublist1)
sublist1 = list1[-1::-1]
print(sublist1)
sublist1 = list1[:-4:-1]
print(sublist1)
sublist1 = list1[-4:-1:-1]
print(sublist1)
sublist1 = list1[-4::-1]
print(sublist1)
sublist1 = list1[:-1:-1]
print(sublist1)
list1 = [11,22,33,44,55,66,77,88,99]
print(list1[::])
print(list1[::1])
print(list1[::-1]) #倒序
切片
list1 = [11,22,33,44,55,66,77,88,99]
print(list1[-1]) #获取元素
一、一般情况
*注意:start和end写出来,遵循前闭后开
... -4 -3 -2 -1 0 1 2 3 4 ...
1.省略step
print(list1[0:3]) #[11, 22, 33]
print(list1[:3]) #[11, 22, 33]
print(list1[0:]) #[11, 22, 33, 44, 55, 66, 77, 88, 99]
list1 = [11,22,33,44,55,66,77,88,99]
2.start和end为负数
print(list1[-1:-4:1])
print(list1[-1:-4:])
print(list1[-1:-4:-1])
print(list1[-4:-1:1]) #[66 77 88]
print(list1[-4:-1:]) #[66 77 88]
print(list1[-4:-1:-1]) #[]
list1 = [11,22,33,44,55,66,77,88,99]
3.start和end为正数
print(list1[1:4:1]) #[22, 33, 44]
print(list1[1:4:]) #[22, 33, 44]
print(list1[1:4:-1]) #[]
4.start和end可以为正数,也可以为负数【特殊情况】
11 22 33 44 55 66 77 88 99 元素
0 1 2 3 4 5 6 7 8 正索引
-9 -8 -7 -6 -5 -4 -3 -2 -1 负索引
print(list1[1:-4]) #[22, 33, 44, 55]
print(list1[1:-4:-1]) #[]
print(list1[-1:4]) #[]
print(list1[-1:4:-1]) #[99, 88, 77, 66]
print(list1[-1:-5:-1]) #[99, 88, 77, 66]
总结:如果start和end没有省略,start + step的结果判断是否在指定区间内
二、特殊情况
list1 = [11,22,33,44,55,66,77,88,99]
1.
print(list1[100:]) # []
2.
print(list1[0:-1]) #[11, 22, 33, 44, 55, 66, 77, 88]
print(list1[0:8]) #[11, 22, 33, 44, 55, 66, 77, 88]
3.
print(list1[4:100]) #[55, 66, 77, 88, 99]
print(list1[4:]) #[55, 66, 77, 88, 99]
4.
print(list1[::1]) #[11, 22, 33, 44, 55, 66, 77, 88, 99]
print(list1[::-1]) #[99, 88, 77, 66, 55, 44, 33, 22, 11] 【面试题】,倒序
5
print(list1[-1:0]) #[]