前言
在之前的学习过程中呢,我们已经系统地学习了 Python 的基础语法,对循环分支语句和字符串等重要内容有了深入的理解哦 这些知识为我们开启了 Python 编程的大门,让我们初步领略到了编程世界的奇妙之处呢 而现在,让我们继续踏上探索之旅,开始学习一种新的数据结构——列表啦 列表在 Python 中是一种非常实用且功能强大的数据结构,它可以帮助我们存储和管理多个元素,在实际的编程任务中发挥着不可或缺的作用哦 让我们一起深入探究列表的奥秘,掌握它的各种操作和使用方法,为我们解决更加复杂的编程问题添砖加瓦吧 相信通过对列表的学习,我们能够进一步拓宽自己的编程技能,更加得心应手地应对各种编程挑战哦 希望大家都能以饱满的热情投入到新的学习中,一起开启一段精彩的学习之旅呢
列表的常用内置方法
一、元素添加与扩展
-
list.append(item):my_list = [1, 2, 3] my_list.append(4) print(my_list) # 输出: [1, 2, 3, 4]该方法用于在列表的末尾添加一个元素
item。它会修改原始列表,不会返回新的列表。 -
list.extend(iterable):my_list = [1, 2, 3] my_list.extend([4, 5, 6]) print(my_list) # 输出: [1, 2, 3, 4, 5, 6]用于将可迭代对象
iterable(如列表、元组、字符串等)中的元素添加到列表的末尾,会修改原始列表。 -
list.insert(index, item):my_list = [1, 2, 3] my_list.insert(1, 4) print(my_list) # 输出: [1, 4, 2, 3]在列表的指定
index位置插入元素item,原位置及之后的元素会向后移动一位。
二、元素删除
-
list.remove(item):my_list = [1, 2, 3, 2] my_list.remove(2) print(my_list) # 输出: [1, 3, 2]从列表中移除第一个出现的元素
item。如果元素不存在,会抛出ValueError异常,使用时需注意。 -
list.pop([index]):my_list = [1, 2, 3] popped_item = my_list.pop() # 不指定 index,默认移除最后一个元素 print(popped_item) # 输出: 3 print(my_list) # 输出: [1, 2] popped_item = my_list.pop(0) # 移除指定 index 的元素 print(popped_item) # 输出: 1 print(my_list) # 输出: [2]移除并返回列表中指定
index位置的元素,如果不指定index,则移除并返回最后一个元素。 -
list.clear():my_list = [1, 2, 3] my_list.clear() print(my_list) # 输出: []清空列表中的所有元素,将列表变成空列表。
三、元素查找与计数
-
list.index(item[, start[, end]]):my_list = [1, 2, 3, 2] index = my_list.index(2) print(index) # 输出: 1 index = my_list.index(2, 2) # 从索引 2 开始查找 print(index) # 输出: 3查找元素
item在列表中首次出现的索引,可指定起始start和结束end索引范围。如果元素不存在,会抛出ValueError异常。 -
list.count(item):my_list = [1, 2, 3, 2] count = my_list.count(2) print(count) # 输出: 2统计元素
item在列表中出现的次数。
四、列表排序与反转
-
list.sort([key=None, reverse=False]):my_list = [3, 1, 2] my_list.sort() print(my_list) # 输出: [1, 2, 3] my_list = ["banana", "apple", "cherry"] my_list.sort(key=len) # 按元素长度排序 print(my_list) # 输出: ["apple", "cherry", "banana"] my_list.sort(reverse=True) # 降序排序 print(my_list) # 输出: ["cherry", "banana", "apple"]对列表中的元素进行排序。可通过
key参数指定排序依据,通过reverse参数指定排序顺序(默认为升序)。该方法会修改原始列表。 -
list.reverse():my_list = [1, 2, 3] my_list.reverse() print(my_list) # 输出: [3, 2, 1]反转列表中元素的顺序,修改原始列表。
五、列表的复制
-
list.copy():my_list = [1, 2, 3] new_list = my_list.copy() print(new_list) # 输出: [1, 2, 3]复制列表,返回一个新列表,新列表是原始列表的浅拷贝。
六、列表元素的修改
-
通过索引修改元素:
my_list = [1, 2, 3] my_list[1] = 4 print(my_list) # 输出: [1, 4, 3]可以直接使用索引来修改列表中元素的值。
七、列表的转换
-
list(iterable):my_tuple = (1, 2, 3) my_list = list(my_tuple) print(my_list) # 输出: [1, 2, 3] my_string = "hello" my_list = list(my_string) print(my_list) # 输出: ['h', 'e', 'l', 'l', 'o']将可迭代对象
iterable(如元组、字符串等)转换为列表。
这些列表的内置方法为我们在处理列表数据时提供了极大的便利,无论是元素的添加、删除、查找、排序还是复制等操作,都可以轻松实现。在实际编程中,根据具体的需求灵活运用这些方法,能够提高代码的简洁性和可读性,让你更加高效地处理列表数据哦 例如,在处理数据集合、任务队列、存储一系列相关元素时,列表及其内置方法都将是你的得力助手呢
课堂练习
练习一:列表元素添加
题目: 使用 pywebio3 编写一个程序,让用户输入一个初始列表(元素用逗号分隔)和一个元素,将该元素添加到列表末尾,然后输出修改后的列表。
分析: 本题主要考查列表的 append 方法和 pywebio3 的输入输出功能。学生需要掌握如何将用户输入的元素添加到列表中,并通过 pywebio3 展示结果。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def add_element_to_list():
# 获取用户输入的初始列表和元素
data = input_group("请输入一个初始列表(元素用逗号分隔)和一个元素", [
input(name='list_str',),
input(name='element',)
])
original_list = data['list_str'].split(',')
element = data['element']
original_list.append(element)
put_text(f"修改后的列表是:{original_list}")
if __name__ == "__main__":
add_element_to_list()
解释:
- 首先,使用
input_group函数从用户那里获取两个输入:一个是初始列表(以字符串形式输入,元素用逗号分隔)和一个要添加的元素。 - 将输入的初始列表字符串通过
split(',')方法转换为列表存储在original_list中。 - 使用
append方法将用户输入的元素添加到original_list的末尾。 - 最后,使用
put_text函数输出修改后的列表。
点评: 此练习是对列表 append 方法的简单应用,通过 pywebio3 实现用户输入和输出,有助于学生掌握列表元素添加操作,并初步熟悉 pywebio3 的使用。
练习二:列表元素删除
题目: 使用 pywebio3 编写一个程序,让用户输入一个列表(元素用逗号分隔)和一个元素,从列表中删除该元素(只删除第一个出现的),并输出修改后的列表。
分析: 本题考查列表的 remove 方法和 pywebio3 的输入输出,需要学生考虑元素可能不存在的情况。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def remove_element_from_list():
# 获取用户输入的列表和元素
data = input_group("请输入一个列表(元素用逗号分隔)和一个元素", [
input(name='list_str',),
input(name='element',)
])
original_list = data['list_str'].split(',')
element = data['element']
try:
original_list.remove(element)
except ValueError:
put_text(f"列表中不存在元素 '{element}'。")
else:
put_text(f"修改后的列表是:{original_list}")
if __name__ == "__main__":
remove_element_from_list()
解释:
- 使用
input_group函数获取用户输入的列表(以字符串形式)和要删除的元素。 - 将输入的列表字符串转换为列表存储在
original_list中。 - 使用
try-except语句调用remove方法删除元素,如果元素不存在会引发ValueError,则输出相应提示;如果删除成功,输出修改后的列表。
点评: 此练习涉及异常处理和列表元素的删除操作,让学生在实践中学会处理可能出现的错误,同时巩固列表 remove 方法和 pywebio3 的使用。
练习三:列表元素插入
题目: 使用 pywebio3 编写一个程序,让用户输入一个列表(元素用逗号分隔)、一个元素和一个索引,将元素插入到列表的指定索引位置,并输出修改后的列表。
分析: 本题考查列表的 insert 方法,以及对用户输入的索引处理,需要确保输入的索引在合理范围。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def insert_element_into_list():
# 获取用户输入的列表、元素和索引
data = input_group("请输入一个列表(元素用逗号分隔)、一个元素和一个索引", [
input(name='list_str',),
input(name='element',),
input(name='index', type='number')
])
original_list = data['list_str'].split(',')
element = data['element']
index = int(data['index'])
if 0 <= index <= len(original_list):
original_list.insert(index, element)
put_text(f"修改后的列表是:{original_list}")
else:
put_text("输入的索引超出范围。")
if __name__ == "__main__":
insert_element_into_list()
解释:
- 通过
input_group函数获取用户输入的列表、元素和索引。 - 将列表字符串转换为列表,将索引转换为整数。
- 判断索引是否在合理范围(0 到列表长度),若在则使用
insert方法插入元素并输出结果,否则输出提示信息。
点评: 本题让学生深入理解列表 insert 方法的使用,并学会处理输入索引的边界问题,同时加强 pywebio3 的输入输出操作。
练习四:列表元素排序
题目: 使用 pywebio3 编写一个程序,让用户输入一个数字列表(元素用逗号分隔),将列表中的元素按升序排序并输出结果。
分析: 本题考查列表的 sort 方法和 pywebio3 的输入输出,需要将用户输入的数字列表元素转换为数字类型。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def sort_list():
# 获取用户输入的数字列表
data = input_group("请输入一个数字列表(元素用逗号分隔)", [
input(name='list_str',)
])
original_list = [float(num) for num in data['list_str'].split(',')]
original_list.sort()
put_text(f"排序后的列表是:{original_list}")
if __name__ == "__main__":
sort_list()
解释:
- 使用
input_group获取用户输入的数字列表(以字符串形式)。 - 使用列表推导式将输入的字符串元素转换为浮点数存储在
original_list中。 - 调用
sort方法对original_list进行升序排序并输出结果。
点评: 此练习让学生掌握列表 sort 方法,以及将输入元素转换为数字类型的技巧,同时巩固 pywebio3 的使用,有助于提升对列表排序操作的理解。
练习五:列表元素统计
题目: 使用 pywebio3 编写一个程序,让用户输入一个列表(元素用逗号分隔)和一个元素,统计该元素在列表中出现的次数并输出结果。
分析: 本题考查列表的 count 方法和 pywebio3 的输入输出,让学生学会使用 count 方法统计元素出现次数。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def count_element_in_list():
# 获取用户输入的列表和元素
data = input_group("请输入一个列表(元素用逗号分隔)和一个元素", [
input(name='list_str',),
input(name='element',)
])
original_list = data['list_str'].split(',')
element = data['element']
count = original_list.count(element)
put_text(f"元素 '{element}' 在列表中出现的次数是:{count}")
if __name__ == "__main__":
count_element_in_list()
解释:
- 使用
input_group函数获取用户输入的列表和元素。 - 将列表字符串转换为列表。
- 使用
count方法统计元素出现次数并输出结果。
点评: 此练习帮助学生巩固列表 count 方法的使用,同时通过 pywebio3 进行用户交互和结果输出,增强列表元素统计操作的熟练度。
课后练习
练习一:列表元素交换
题目: 使用 pywebio3 编写一个程序,让用户输入一个列表(元素用逗号分隔)和两个索引,交换列表中这两个索引位置的元素,并输出修改后的列表。
分析: 本题主要考查列表元素的索引访问和交换操作,以及 pywebio3 的输入输出功能。学生需要注意输入索引的合法性,并实现元素的交换逻辑。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def swap_elements():
# 获取用户输入的列表和两个索引
data = input_group("请输入一个列表(元素用逗号分隔)和两个索引", [
input(name='list_str',),
input(name='index1', type='number'),
input(name='index2', type='number')
])
original_list = data['list_str'].split(',')
index1 = int(data['index1'])
index2 = int(data['index2'])
if 0 <= index1 < len(original_list) and 0 <= index2 < len(original_list):
original_list[index1], original_list[index2] = original_list[index2], original_list[index1]
put_text(f"修改后的列表是:{original_list}")
else:
put_text("输入的索引超出范围,请重新输入。")
if __name__ == "__main__":
swap_elements()
解释:
- 使用
input_group函数从用户那里获取一个列表(以字符串形式输入)和两个索引。 - 将列表字符串通过
split(',')方法转换为列表,并将输入的索引转换为整数。 - 检查输入的索引是否在合法范围(0 到列表长度减 1),若合法则交换两个索引位置的元素,否则输出错误提示。
- 最后使用
put_text函数输出修改后的列表。
点评: 这个练习让学生学会如何使用索引访问列表元素并交换它们,同时培养学生对输入合法性的判断能力,通过 pywebio3 实现交互,增强了对列表元素操作的实践经验。
练习二:列表切片操作
题目: 使用 pywebio3 编写一个程序,让用户输入一个列表(元素用逗号分隔)和切片参数(起始索引、结束索引、步长),对列表进行切片操作并输出结果。
分析: 本题考查列表的切片操作和 pywebio3 的输入输出。学生需要理解列表切片的 start:end:step 语法,并处理可能的输入异常。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def slice_list():
# 获取用户输入的列表和切片参数
data = input_group("请输入一个列表(元素用逗号分隔)和切片参数(起始索引、结束索引、步长)", [
input(name='list_str',),
input(name='start_index', type='number'),
input(name='end_index', type='number'),
input(name='step', type='number')
])
original_list = data['list_str'].split(',')
start_index = int(data['start_index'])
end_index = int(data['end_index'])
step = int(data['step'])
sliced_list = original_list[start_index:end_index:step]
put_text(f"切片后的列表是:{sliced_list}")
if __name__ == "__main__":
slice_list()
解释:
- 使用
input_group函数让用户输入列表和切片所需的三个参数(起始索引、结束索引、步长)。 - 将输入的列表字符串转换为列表,并将切片参数转换为整数。
- 进行列表切片操作,将结果存储在
sliced_list中并输出。
点评: 此练习帮助学生巩固列表切片操作,让他们在 pywebio3 环境下学会如何根据用户输入进行切片操作,加强对切片语法的理解和输入处理能力。
练习三:列表元素筛选
题目: 使用 pywebio3 编写一个程序,让用户输入一个数字列表(元素用逗号分隔),筛选出其中的偶数元素,并输出筛选后的列表。
分析: 本题考查列表元素的遍历和筛选,需要使用 for 循环和条件判断,同时使用 pywebio3 进行输入输出。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def filter_even_elements():
# 获取用户输入的数字列表
data = input_group("请输入一个数字列表(元素用逗号分隔)", [
input(name='list_str',)
])
original_list = [int(num) for num in data['list_str'].split(',')]
even_list = []
for num in original_list:
if num % 2 == 0:
even_list.append(num)
put_text(f"筛选出的偶数列表是:{even_list}")
if __name__ == "__main__":
filter_even_elements()
解释:
- 使用
input_group函数获取用户输入的数字列表(以字符串形式),并将其元素转换为整数存储在original_list中。 - 初始化一个空列表
even_list用于存储偶数元素。 - 使用
for循环遍历original_list,使用if语句筛选出偶数元素添加到even_list中。 - 最后使用
put_text函数输出筛选后的偶数列表。
点评: 这个练习结合了列表元素的遍历、条件判断和添加操作,让学生巩固对列表的操作和逻辑判断能力,同时在 pywebio3 中实现用户交互和结果展示。
练习四:列表元素去重
题目: 使用 pywebio3 编写一个程序,让用户输入一个列表(元素用逗号分隔),去除列表中的重复元素,并输出去重后的列表。
分析: 本题考查列表元素的去重操作,可以使用多种方法,如使用集合或遍历列表添加元素时检查是否已存在。这里使用 for 循环和 in 关键字进行去重。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def remove_duplicates():
# 获取用户输入的列表
data = input_group("请输入一个列表(元素用逗号分隔)", [
input(name='list_str',)
])
original_list = data['list_str'].split(',')
unique_list = []
for element in original_list:
if element not in unique_list:
unique_list.append(element)
put_text(f"去重后的列表是:{unique_list}")
if __name__ == "__main__":
remove_duplicates()
解释:
- 使用
input_group函数获取用户输入的列表(以字符串形式),并将其存储在original_list中。 - 初始化一个空列表
unique_list用于存储不重复的元素。 - 遍历
original_list,使用if语句和in关键字判断元素是否已在unique_list中,若不在则添加。 - 最后使用
put_text函数输出去重后的列表。
点评: 此练习让学生掌握列表去重的基本逻辑,培养他们使用循环和条件判断处理列表元素的能力,同时结合 pywebio3 进行用户输入和结果输出。
练习五:列表元素的合并与排序
题目: 使用 pywebio3 编写一个程序,让用户输入两个列表(元素用逗号分隔),将两个列表合并并排序,输出结果。
分析: 本题考查列表的合并操作(使用 + 运算符)和 sort 方法,以及 pywebio3 的输入输出功能。
代码:
from pywebio3.input import input_group, input
from pywebio3.output import put_text
def merge_and_sort_lists():
# 获取用户输入的两个列表
data = input_group("请输入两个列表(元素用逗号分隔)", [
input(name='list1_str',),
input(name='list2_str',)
])
list1 = data['list1_str'].split(',')
list2 = data['list2_str'].split(',')
merged_list = list1 + list2
merged_list.sort()
put_text(f"合并并排序后的列表是:{merged_list}")
if __name__ == "__main__":
merge_and_sort_lists()
解释:
- 使用
input_group函数获取用户输入的两个列表(以字符串形式)。 - 将两个列表字符串分别转换为列表,并使用
+运算符合并它们。 - 对合并后的列表使用
sort方法进行排序并输出结果。
点评: 本题让学生学会合并两个列表并对其排序,综合运用列表的基本操作和排序方法,通过 pywebio3 实现用户交互和结果展示,巩固列表操作技能。
总结
本节课的核心内容是对列表的常用内置方法展开了深入学习哦 我们一起探索了列表这个强大的数据结构所拥有的众多内置方法,这些方法为我们处理列表中的元素提供了丰富多样的操作手段呢 从元素的添加、删除、插入,到元素的查找、排序、计数,再到列表的复制、反转等等,我们都进行了详细的学习和讨论。为了让大家更好地掌握这些知识,我们还精心设计并完成了大量的练习题,让大家在实践中不断尝试和运用这些内置方法,亲身体验它们在不同场景下的使用方式和效果呢 希望通过这些学习和练习,大家能够更加熟练地运用列表的内置方法,能够更加得心应手地操作列表数据,为今后解决更加复杂的编程问题打下坚实的基础哦 让我们继续在编程的道路上探索,不断提升自己的编程技能,一起向着更高的编程水平迈进吧!
宝子们,我在 Python 的世界里摸爬滚打十余载,积累了不少心得体会。如今想把这些年的经验和知识毫无保留地分享给有缘的小伙伴。要是你对 Python 学习感兴趣,欢迎来试听一二,也可以随时在评论区留言或者私信我,咱们一起探讨,共同进步,开启 Python 学习的奇妙之旅!
人生苦短, 我用Python, 坚持每天学习, 坚持每天进步一点点...