目录
一、基础知识
二、练习
题目1 [加强训练]
题干
训练目标
训练提示
参考方案
操作步骤
参考答案
题目2 [加强训练]
题干
训练目标
训练提示
参考方案
操作步骤
参考答案
题目3 [加强训练]
题干
训练目标
训练提示
参考方案
操作步骤
参考答案
一、基础知识
1、空列表
my_list=[]
my_list1=list()
2、含数据 任意类型数值
my_list2=[1,3.14,True,'isaac'] #布尔类型当作数字
3、列表元素个数
num=len(my_list2)
4、支持下标和切片
a=my_list2[1]
b=my_list2[-1]
c=my_list2[1:3]
5、列表可以使用下标修改数据,字符串不能
my_list2[0]=18
my_list2[-1]='hello'
6、列表遍历
name=['肖战','张杰','白敬亭','邓论']
print('*****for循环******')
for i in name:
print(i) #每一个数据
print('*****while循环******')
j=0 #下标
while j<len(name):
print(name[j])
j+=1
7、列表添加数据 原列表中添加
# append() 尾部追加
name.append('吴磊')
print(name)
# insert(下标,数据) 指定位置添加
name.insert(0,'赵露思')
print(name)
# extend(可迭代对象) 将可迭代对象中的数据逐个添加到原列表末尾
name2=['迪丽热巴','杨幂','唐嫣','肖战']
name.extend(name2)
print(name)
8、列表查询操作、删除、排序、嵌套
# index() 找到某元素下标 没有find()方法 数据不存在则报错
print(name.index('肖战'))
# count() 统计出现次数
print(name.count('肖战'))
# in/not 存在是True 不存在是False
print('肖战' in name)
# 列表删除操作
# 根据元素数据值删除 remove(数值) 数据不存在则报错
name.remove('杨幂')
print(name)
# 根据元素下标删除 pop() 默认删除最后一个数据,返回删除内容
print(name.pop())
print(name.pop(3))
print(name)
# 根据元素下标删除 del 列表[下标] 下标不存在则报错
del name[3]
print(name)
# 列表排序(列表中数据类型一样)与逆置
number=[1,3,2,77,42,67,123,75,22,21,2,7]
# sort() 直接在原列表进行排序
number.sort() # 默认升序
print(number)
number.sort(reverse=True) # 降序reverse=True
print(number)
# sorted() 不在原列表进行排序,会得到新列表
a=sorted(number) # 升序、降序同sort()
print(a)
# 逆置
str_1=['a','b','c','d','e','f']
print(str_1[::-1])
str_1.reverse()
print(str_1)
# 列表嵌套
school_names=[['北京大学','清华大学'],
['南开大学','天津大学','天津师范大学'],
['西安石油大学','西安工业大学']]
print(school_names[1])
print(school_names[1][1])
print(school_names[1][1][1])
for schools in school_names:
for name in schools:
print(name)
9、小案例
# 分配办公室 一个学校有三个办公室,有八位老师等待工位分配,请完成随机分配
import random
offices=[[],[],[]]
names=['赵露思', '肖战', '张杰', '白敬亭', '邓伦', '吴磊', '迪丽热巴','金韩']
for name in names:
index=random.randint(0,2)
offices[index].append(name)
for temp_names in offices:
print(f'该办公室的人数为{len(temp_names)}')
print(temp_names)
for teacher in temp_names:
print(f'办公室的老师为{teacher}')
二、练习
题目1 [加强训练]
题干
有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,最后输出这个新的列表
list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
训练目标
让学员知道列表的循环和值的获取,以及列表的操作方法
训练提示
- 如何找到列表中的每一个元素?
- 如何判断列表中的元素以什么字符结尾?
参考方案
- 使用循环遍历的方式获取列表中的每一个元素?
- 列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.
操作步骤
- 遍历列表中的每一个元素
- if 判断 最后一个字符是否是
s
或者e
- 如果是,使用 append() 方法,将数据追加到新的列表中.
参考答案
my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
# 用来存放以e或者s结尾的字符串
new_list = []
for i in my_list:
# 判断列表中每一个元素是否以s或e结尾
if i[-1] == 's' or i[-1] == 'e':
new_list.append(i)
# 打印出这个新的列表
print(new_list)
方法二:
使用字符串中的方法来判断.
my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
# 用来存放以e或者s结尾的字符串
new_list = []
for i in my_list:
# 判断列表中每一个元素是否以s或e结尾
if i.endswith('s') or i.endswith('e'):
new_list.append(i)
# 打印出这个新的列表
print(new_list)
题目2 [加强训练]
题干
给定一个列表,首先删除以s开头的元素,删除后,修改第一个元素为"joke",并且把最后一个元素复制一份,放在joke的后边
my_list = ["spring", "look", "strange", "curious", "black", "hope"]
训练目标
列表的相关操作
训练提示
- 通过for循环遍历列表,获取到每一个元素
- 通过列表的操作方法对列表进行修改
参考方案
- 通过for循环获取每一个元素
- 通过remove删除列表中的元素
- 通过insert函数在指定位置插入元素
操作步骤
- 通过for循环获取每一个元素,判断是否以
s
开头 - 如果条件成立,则通过remove删除选中的元素
- 获取到最后一个元素,通过replace将元素放在指定的位置上
参考答案
my_list = ["spring", "look", "strange" "curious", "black", "hope"]
for i in my_list[:]:
# 删除以s开头的元素,
if i[0] == 's':
my_list.remove(i)
# 修改第一个元素为"joke"
my_list[0] = "joker"
# 获取最后一个元素
last_one = my_list[-1]
# 将最后一个元素放在joke的后面
my_list.insert(1, last_one)
print(my_list)
题目3 [加强训练]
题干
将下列两个列表合并,将合并后的列表去重,之后降序并输出
list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]
训练目标
列表操作方法的使用
训练提示
- 如何合并两个列表?
- 如何进行列表去重?
- 如何排序并降序输出?
参考方案
- 合并列表可以使用 extend()方法或者两个列表相加。
- 列表去重有两种方案
- 自己实现方法实现,借助一个新的列表,循环遍历原列表,判断元素是否在新的列表中,如果在,遍历下一个元素,如果不在,添加到新的列表中。
- 使用 set() 集合去重
- sort 函数可以实现排序,参数reverse=True对列表进行倒序排序
操作步骤
1,使用 + 对列表进行拼接(或者使用 extend) 2,列表去重 3,使用sort函数,参数reverse=True对列表进行倒序排序
参考答案
方案 1
list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]
# 1. 使用 + 合并两个列表
my_list = list1 + list2
# 2. 列表去重
# 2.1 定义新的空列表保存去重后的数据
my_list1 = []
# 2.2 遍历合并后的列表
for i in my_list:
# 2.3 判断i 是否在my_list1 中
if i in my_list1:
# 2.3.1 如果存在,直接下一次循环
continue
else:
# 2.3.2 将i添加到my_list1 中.
my_list1.append(i)
# 3. 循环结束,得到去重后的列表 my_list1,进行排序
my_list1.sort(reverse=True)
# 4. 输出最后的结果
print(my_list1)
方案 2 暂时不用管后边会学习
使用集合(set), 去重,
set 也是一个容器,具有自动去重的功能(后续会学习)
目前只需要了解即可.
list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]
# 列表拼接
list3 = list1 + list2
# 列表去重
list4 = set(list3)
list5 = list(list4)
# 列表降序输出
list5.sort(reverse=True)
print(list5)