目录
知识点:获取子列表,遍历列表,对列表进行操作,输出列表
习题:列表的综合实例
知识点:
1.使用切片方式访问(获取子列表)
● 格式:列表 [ start : end : step ]
start: 起始位置(包括此位置),默认为0
end: 结束位置(不包括此位置),不写则默认为列表长度
step:切片步长默认为1
●使用切片可以截取列表中的部分元素,得到一个新列表。切片适用于列表、元组、字符串、range对象等。
print(list1[2:]) # 获取列表中索引为2至末尾的元素
print(list1[:3]) # 获取列表中索引为0至索引值为3的元素
print(list1[:]) # 获取列表中的所有元素
print(list1[-len(list1)]) # 输出最左边的元素
示例代码:
list1 = ["fish", "pig", "dog", "cat"]
print(list1[2:]) # 获取列表中索引为2至末位所有元素
print(list1[-1])
print(list1[1:4:2])
print(list1) # 输出所有元素
print(list1[::-1]) # 逆向输出
2.遍历列表(range 函数索引遍历;enumerate函数遍历)
list1 = ["fish", "pig", "dog", "cat"]
for i in list1:
print(i, end=" ")
# range 函数索引遍历
list1 = ["fish", "pig", "dog", "cat"]
for i in range(len(list1)):
print(f"索引为{i}的元素是:{list1[i]}")
# enumerate函数遍历
list1 = ["fish", "pig", "dog", "cat"]
for i, item in enumerate(list1):
print(f"索引为{i}的元素是:{item}")
3.对列表进行增删改
# 追加 (append增加元素;extend追加列表)
list1 = ["fish", "pig", "dog", "cat"]
list2 = [1, 2, 3]
list1.append("鱼摆摆")
list1.extend(list2)
print(list1)
# 插入(insert插入元素)
list1 = ["fish", "pig", "dog", "cat"]
list1.insert(1, "yubaibai")
print(list1)
# 移出(remove移除某个元素;del 删除列表指定位置的元素)
list1 = ["fish", "pig", "dog", "cat"]
list1.remove("pig") # 移除某个元素
list1.pop() # 默认移除最后一个元素
del list1[1] # 删除指定位置的元素
print(list1)
# 修改替换
list1 = ["fish", "pig", "dog", "cat"]
list1[1] = "yu bai bai"
list1[1:4] = [9, 10] # 替换切片位置的元素
print(list1)
4.输出列表(升序,降序,永久,临时)
# 输出升降序
list1 = [12, 56, 24, 13, 45]
list1.sort() # 升序 无法恢复顺序 永久
list1.sort(reverse=True) # 降序 无法恢复顺序 永久
list1.reverse() # 反转 永久
print(sorted(list1)) # 临时升序排序
print(list1)
list2 = ["fish", "pig player", "big dog", "cat"]
list2.sort(key=len) # 按长度 从小到大
print(list2)
习题:
实例1:编写程序,将8名教师随机分配到3个办公室中。
代码:
方法一:
import random
offices = [[], [], []]
list1 = ["王老师", "张老师", "李老师", "周老师", "吴老师", "赵老师", "高老师", "刘老师"]
for name in list1:
n = random.randint(0, 2)
offices[n].append(name)
i = 1
for office in offices:
print("办公室%d的人数为:%d" % (i, len(office)))
i += 1
for name in office:
print(name, end="\t")
print(end="\n")
方法二:
import random
offices = [[], [], []]
list1 = ["王老师", "张老师", "李老师", "周老师", "吴老师", "赵老师", "高老师", "刘老师"]
for name in list1:
n = random.randint(0, 2)
offices[n].append(name)
for i in range(len(offices)):
print(f"办公室{i+1}的人数为:{len(offices[i])}")
for name in offices[i]:
print(name, end=" ")
print()
实例2(列表的综合应用实现增删改查):
好友管理系统中有5个功能,每个功能都对应一个序号,用户可根据提示“请输入您的选项”选择序号执行相应的操作,包括:
添加好友:用户根据提示“请输入要添加的好友:”输入要添加好友的姓名,添加后会提示“好友添加成功”。
删除好友:用户根据提示“请输入删除好友姓名:”输入要删除好友的姓名,删除后提示“删除成功”。
备注好友:用户根据提示“请输入要修改的好友姓名:”和“请输入修改后的好友姓名:”分别输入修改前和修改后的好友姓名,修改后会提示“备注成功”。
展示好友:若用户还没有添加过好友,提示“好友列表为空”,否则返回每个好友的姓名。
退出:关闭好友管理系统。
代码:
list1 = []
print("好友管理系统")
print("1.添加好友")
print("2.删除好友")
print("3.备注好友")
print("4.展示好友")
print("5.退出")
while True:
i = int(input("请输入您的选项:"))
if i == 1:
f = input("请输入添加的好友:")
list1.append(f)
print("好友添加成功")
elif i == 2:
f = input("请输入删除好友姓名:")
list1.remove(f)
print("删除成功")
elif i == 3:
name_first = input("请输入要修改的好友姓名:")
name_last = input("请输入修改后的好友姓名:")
i = list1.index(name_first)
list1[i] = name_last
print("备注成功")
elif i == 4:
if len(list1) == 0:
print("好友列表为空")
else:
for n in list1:
print(n)
elif i == 5:
break
print("退出好友系统")