# 列表
'''
在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标房屋内成员
这些类型称为有序序列,包括:列表、range、元组和字符串;其中列表的成员可以被修改
属于可变序列。字符串和元组,成员不可修改,属于不可变序列。序列有共同操作:
成员关系运算(in,not in)
连接操作(+)
重复操作(*)
切片操作([::])
'''
# 1.概叙
'''
列表本身是一种容器,可以存储多个数据,本质就是一种有序的集合
存储一个数据可以使用变量,如果需要存储多个数据就可以使用列表
'''
# 2.创建列表
'''
语法:列表名 = [数据一,数据二,数据三...]
使用[]表是列表,列表名就是一个标识符
列表中的列表选项称之为元素,列表中的元素分别被编号,这些编号被称为下标
列表下标:
从左向右编号:0,1,2...n-1
从右向坐编号:-1,-2.....
eg:
[5,6,7,8,9,10]
0 1 2 3 4 5 从左向右下标
-6 -5 -4 -3 -2 -1 从右向左
列表组合 将两个列表拼接为⼀个列表
直接使⽤加号
list1 = [43,65,76,6]
list2 = [45,77,90,11,2,4,66]
print(list1 + list2) #[43,65,76,6,45,77,90,11,2,4,66] 产⽣⼀个新列表
列表重复
直接使⽤乘号 列表内容重复指定遍数,产⽣⼀个新列表
print(list1 * 2) # [43,65,76,6,43,65,76,6]
成员操作
成员运算符:in not in
运算的结果为布尔值
list3 = ["hello",False,189,"good"]
print(189 in list3) #True
print(180 not in list3) #True
列表的截取
语法:列表名[开始下标:结束下标:步⻓],表示按指定步⻓获取从开始下标到结束下标之间的元素。
结果为⼀个新的列表
注意:包头不包尾【前闭后开区间】 [开始下标,结束下标) #步⻓:默认是1,正数表示从左向右取,负数表示从右向左取
list1 = [10,20,30,40,50,60]
print(list1[0:3]) #[10,20,30]
print(list1[:3]) #[10,20,30]
print(list1[:]) #[10,20,30,40,50,60] 从头取到尾
print(list1[::2]) # [10,30,50] 隔⼀个取⼀个
print(list1[3::-1]) #[40, 30, 20, 10] 从右向左取
print(list1[-1:-3:-1]) #[60, 50] 从右向左取
print(list1[2:]) #[30, 40, 50, 60] 从下标为2的元素开始取到末尾
print(list1[-3::-1])#[40, 30, 20, 10] 从右向左取到第⼀个元素
列表⻓度
print(len(list1))
列表最⼤值和最⼩值、求和
print(max(list1))
print(min(list1))
print(sum(list1))
'''
# 3.列表的使用
'''
1.使用
list1 = [] # 创建一个空列表
list2 = [1,2,3,True,'嘿']
list3 = list() #创建一个空列表
list4 = list('hello world')
列表中的元素不能整体访问,只能单个进行存取
2.取值
语法:列表名[下标]
list1 = [1,2,3,4,5]
print(list1[2]) ===> 3
#下标如果越界,就会以后引发IndexError,需要自己确定不要越界
3.修改
语法:列表名[下标] = 新元素
list[2] = 666
'''
# 4.列表的遍历
'''
列表的遍历就是访问列表的每一个元素,可以使用while循环和for-in循环,一般使用for-in遍历列表
for-in 语法:
for 变量名 in 列表:
语句A
else:
语句B
说明:主要用于遍历序列中的每一个元素,获取元素值
使用enumerate函数将列表变成一个索引序列,同时包含下标和数据
for index,value in enumerate(list1):
print(index,value)
'''
# 5.列表的操作
'''
列表操作包括:增加元素、删除元素、查找元素、列表的反转、列表的排序
list1 = [1,2,3,4]
增加元素
list1.append(obj) #在列表的末尾添加一个元素
list1[len(list1):len(list1)] = [40] #等于list1.append()
list1.append([50,60]) #也可以是其它列表、元组、字典、集合等对象
list1.extend(obj) #在列表的末尾一次行追加另一个列表中的元素,obj不能是单个数值,可以是列表等可迭代对象
list1.extend([1,2])
list1.insert(i,obj) #在指定的下标i的位置插入一个新的元素,原来的元素会往后移
删除元素
list1.pop(i) # 删除指定下标的元素,如果下标越界,会出现错误
value = list1.pop() # 删除列表最后一个元素,并返回该元素的值
list1.remove(100) #删除列表中的指定元素,如果没有该元素就会报错
del list1[0] # 按下标删除
list1.clear() # 清空列表
list1[0:2] = [] # 切片删除
查找元素
list1.index(x,start,end) #在[start下标,end下标]的范围内查找等于x元素的下标
说明:如果有等于x的元素就会返回其下标,如果不存在等于x的元素就会报错
list1.count(x) #查找列表中x出现的次数,如果没有x,会返回0
列表反转
把列表元素逆序排列
l1.reverse()
列表排序
list.sort(key=None,reverse=None) 列表⽅法,实现列表就地排序,不产⽣新列表
说明:key参数指明⽤哪个函数进⾏排序,默认值是None,⽤<进⾏⽐较 可选参数
reverse:布尔值,默认值是None,也就是假,从⼩到⼤排序,如果设置为
True,则从⼤到⼩排序,可选参数
'''