6 列表知识
1.列表切片操作
list1 = [1,2,4,3,8]
num = list1[2]
print(num)
print(list1[5]) #下标越界,引发IndexError, 需要自己确定不要越界
list1 = ['杨超越', '热巴', '佟丽娅', '杨幂', '赵丽颖', '刘亦菲', '黑嘉嘉', 100, 99.9]
print(list1[3:6]) # 将截取的结果再次保存在一个列表中 ['杨幂','赵丽颖','刘亦菲']
print(list1[-3:-1]) # ['黑嘉嘉', 100]
print(list1[::2]) # 步长 ['杨超越', '佟丽娅', '赵丽颖', '黑嘉嘉', 99.9]
print(list1[-5:-1:2]) # ['赵丽颖', '黑嘉嘉']
print(list1[-1::-1]) # [99.9, 100, '黑嘉嘉', '刘亦菲', '赵丽颖', '杨幂', '佟丽娅', '热巴', '杨超越']
print(list1[-1::-2]) # [99.9,'黑嘉嘉','赵丽颖','佟丽娅','杨超越']
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] 产生一个新列表
#2.列表重复
#直接使用乘号 列表内容重复指定遍数,产生一个新列表
print(list1 * 2) # [43,65,76,6,43,65,76,6]
#3.成员操作
#成员运算符:in not in
#运算的结果为布尔值
list3 = ["hello",False,189,"good"]
print(189 in list3) #True
print(180 not in list3) #True
#4.列表长度
print(len(list1))
#5.列表最大值和最小值、求和
print(max(list1))
print(min(list1))
print(sum(list1))
#6.列表count,index函数
list1 = [8, 2, 15, 2, 7, 1, 2]
print(list1.count(2)) # 数列表里面2的个数 3
print(list1.index(15)) # 数列表里面15对应的下标 2
3.列表的增删改查
3.1 增加元素
# 1. list.append(obj) 在列表末尾添加新的元素,单一添加
list1 = [10,20,30]
list1.append(40) #可以是普通元素
print(list1) # [10,20,30,40]
list1.append([50,60]) #也可以是其它列表、元组、字典、集合等对象
print(list1) # [10,20,30,40,[50, 60]]
# 2. list.extend(obj) 在列表的末尾一次性追加另一个列表中的元素,可以多个添加
#obj不能是单个数值,可以是列表等可迭代对象
list1 = [10,20,30]
list1.extend([70,80]) #只是将元素添加到list1末尾
print(list1) # [10, 20, 30, 70, 80]
list1 = [10,20,30]
list1.extend("999") #只是将元素添加到l1末尾
print(list1) # [10, 20, 30, '9', '9', '9']
# 3. list.insert(i,obj) 在指定下标i的位置插入一个新元素,原来的元素后移,不会覆盖
list1 = [10,20,30]
list1.insert(1,-20)
print(list1) #[10, -20, 20, 30, 70, 80]
list1.insert(0,[1,2,3])
print(list1) #[[1, 2, 3], 10, -20, 20, 30, 70, 80]
3.2 删除元素
#1. list.pop(i) 删除指定下标的元素,如果下标越界,会出现IndexError
list1 = [10, 20, 30]
value = list1.pop() #删除最后一个元素,并返回该元素的值 30
print(value) # 30
print(list1) # [10, 20]
list1.pop(0) # 删除下标为0的元素
print(list1) # [20]
#2. list.remove(x) 删除列表中第一个值等于x的元素,删除的时候是从左向右找到第一个等于x的元素删除
list1 = [10, -20, 30]
list1.remove(-20)
print(list1) # [10, 30]
# list1.remove(100) 如果列表中没有该值,会引起错误:ValueError
#3.按下标删除
list1 = [10, 20, 30]
del list1[0]
del list1[0:2] # 删除第一个和第二个元素
#3 list.clear() 清空列表
list1 = [10, 20, 30]
list1.clear()
print(list1) # []
3.3 修改元素
# 语法:列表名[索引] = 新的元素值
list1 = [10, 20, 30]
list1[2] = 888
print(list1) # [10, 20, 888]
3.4 查找元素
#1. list.index(x,start,end) 在[start end)范围内查找第一个等于x的元素的下标
#参数说明: x 要查找的元素; start,开始下标;end 结束下标,不包含结束下标
#返回值:如果有值等于x的元素,返回其下标,如果不存在值等于x的元素,会引发ValueError
list1 = [10, 20, 30]
print(list1.index(10)) # 0
print(list1.index(20, 0, 2)) # 1
#2 list.count(x) 查找列表中x出现的次数,如果没有x,返回0
list1 = [10, 20, 30, 10]
print(list1.count(10)) # 2
print(list1.count(99)) # 0 不存在99
4 遍历列表
列表的遍历就是访问列表的每一个元素,可以使用while循环和for-in循环。经常使用for-in循环遍历列表
for-in语法:
for 变量名 in 列表:
语句 A
else:
语句 B
说明:主要用于遍历序列【遍历:依次访问序列中的每一个元素,获取元素值】
工作原理:按照顺序获取列表中的每个元素,赋值给变量,再执行语句A,以此类推,直到列表中的元素全部获取为止,循环终止后执行else语句块。
- 不要在for-in循环中添加或删除元素
# 只能获取元素,不能得到元素的下标
for value in list1:
print(value,end=' ')
# index表示下标,num表示元素值
# enumerate将列表变成一个索引序列,同时包含下标和数据
for index,num in enumerate(list1):
print(index,num)
# 二维列表的遍历,循环嵌套
list1 = [[1, 2], [3, 4], [5, 6]]
for elem in list1:
for value in elem:
print(value, end=' ')
print()
5 枚举
#index表示下标,num表示元素值
#enumerate将可迭代的容器变成一个索引序列,同时包含下标和数据
for index,num in enumerate(list1):
print(index,num)
for index,num in enumerate(str1):
print(index,num)
for index,num in enumerate(set1):
print(index,num)
6 列表排序
#把列表元素逆序排列
list1 = [10, 20, 30, 10]
result = list1[:: -1]
print(result) # [10, 30, 20, 10]
list1 = [10, 20, 30, 10]
list1.reverse()
print(list1) # [10, 30, 20, 10]
list1 = [10, 20, 30, 10]
list1.sort() # 升序排列
print(list1) # [10, 10, 20, 30]
list1 = [10, 20, 30, 10]
list1.sort(reverse = True) # 降序排列
print(list1) # [30, 20, 10, 10]
list1 = [10, 20, 30, 10]
list2 = sorted(list1)
print(list2) # [10, 10, 20, 30]
7.随机数
import random
函数名 | 函数说明 |
---|---|
choice(seq) | 返回一个序列(列表、元组,字符串)中返回一个随机元素 |
randrange(start,end,step) | start 指定范围的起始值 包含本身 end 指定范围的结束值 不包含本身 step 步长 |
randint() | 返回一个随机整数 |
shuffle(seq) | 将序列元素随机排列(打乱顺序) |
8.算法-----冒泡排序法
list1 = [8, 9, 15, 2, 7, 1, 50]
for i in range(len(list1)):
for j in range(i+1, len(list1)):
if list1[i] > list1[j]:
list1[i], list1[j] = list1[j], list1[i]
print(list1)
9.列表作业
"""
1.写出一段Python代码实现删除一个list里面的重复元素
list1 = [22, 88, 33, 77, 7, 22, 12, 96, 88]
list2 = []
for i in range(len(list1)):
if list1[i] not in list2:
list2.append(list1[i])
print(list2)
"""
"""
2.键盘输入多个人名保存到一个列表中,如果里面有重复的则提示此姓名已经存在
list1 = []
while True:
user_input = input("请输入姓名:")
if user_input not in list1:
list1.append(user_input)
else:
print("该用户已经存在")
"""
"""
3.两个列表[1,5,7,9]和[2,2,6,8]合并并排序 结果为:[1,2,2,3,6,7,8,9]
list1 = [1, 5, 7, 9]
list2 = [2, 2, 6, 8]
list3 = list1 + list2
list3.sort()
print(list3) # [1, 2, 2, 5, 6, 7, 8, 9]
list1.extend(list2)
list1.sort()
print(list1) # [1, 2, 2, 5, 6, 7, 8, 9]
"""
"""
4.[[6,3],[8,4,2],[5,6,1]] 转存到一个新的列表中并排序。结果为[1,2,3,4,5,6,6,8]
list1 = [[6, 3], [8, 4, 2], [5, 6, 1]]
list2 = []
for i in range(len(list1)):
for j in range(len(list1[i])):
list2.append(list1[i][j])
list2.sort()
print(list2) # [1, 2, 3, 4, 5, 6, 6, 8]
"""