django33全栈班2025年012 列表和大量练习题

82 阅读17分钟

前言

在之前的学习过程中呢,我们已经系统地学习了 Python 的基础语法,对循环分支语句和字符串等重要内容有了深入的理解哦 这些知识为我们开启了 Python 编程的大门,让我们初步领略到了编程世界的奇妙之处呢 而现在,让我们继续踏上探索之旅,开始学习一种新的数据结构——列表啦 列表在 Python 中是一种非常实用且功能强大的数据结构,它可以帮助我们存储和管理多个元素,在实际的编程任务中发挥着不可或缺的作用哦 让我们一起深入探究列表的奥秘,掌握它的各种操作和使用方法,为我们解决更加复杂的编程问题添砖加瓦吧 相信通过对列表的学习,我们能够进一步拓宽自己的编程技能,更加得心应手地应对各种编程挑战哦 希望大家都能以饱满的热情投入到新的学习中,一起开启一段精彩的学习之旅呢

列表的常用内置方法

一、元素添加与扩展

  • list.append(item)

    my_list = [1, 2, 3]
    my_list.append(4)
    print(my_list)  # 输出: [1234]
    

    该方法用于在列表的末尾添加一个元素 item。它会修改原始列表,不会返回新的列表。

  • list.extend(iterable)

    my_list = [123]
    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(14)
    print(my_list)  # 输出: [1423]
    

    在列表的指定 index 位置插入元素 item,原位置及之后的元素会向后移动一位。

二、元素删除

  • list.remove(item)

    my_list = [1, 2, 3, 2]
    my_list.remove(2)
    print(my_list)  # 输出: [132]
    

    从列表中移除第一个出现的元素 item。如果元素不存在,会抛出 ValueError 异常,使用时需注意。

  • list.pop([index])

    my_list = [123]
    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 = [1232]
    index = my_list.index(2)
    print(index)  # 输出: 1
    index = my_list.index(22)  # 从索引 2 开始查找
    print(index)  # 输出: 3
    

    查找元素 item 在列表中首次出现的索引,可指定起始 start 和结束 end 索引范围。如果元素不存在,会抛出 ValueError 异常。

  • list.count(item)

    my_list = [1232]
    count = my_list.count(2)
    print(count)  # 输出: 2
    

    统计元素 item 在列表中出现的次数。

四、列表排序与反转

  • list.sort([key=None, reverse=False])

    my_list = [312]
    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)  # 输出: [321]
    

    反转列表中元素的顺序,修改原始列表。

五、列表的复制

  • list.copy()

    my_list = [123]
    new_list = my_list.copy()
    print(new_list)  # 输出: [1, 2, 3]
    

    复制列表,返回一个新列表,新列表是原始列表的浅拷贝。

六、列表元素的修改

  • 通过索引修改元素

    my_list = [123]
    my_list[1] = 4
    print(my_list)  # 输出: [1, 4, 3]
    

    可以直接使用索引来修改列表中元素的值。

七、列表的转换

  • list(iterable)

    my_tuple = (123)
    my_list = list(my_tuple)
    print(my_list)  # 输出: [123]
    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()

解释

  1. 首先,使用 input_group 函数从用户那里获取两个输入:一个是初始列表(以字符串形式输入,元素用逗号分隔)和一个要添加的元素。
  2. 将输入的初始列表字符串通过 split(',') 方法转换为列表存储在 original_list 中。
  3. 使用 append 方法将用户输入的元素添加到 original_list 的末尾。
  4. 最后,使用 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()

解释

  1. 使用 input_group 函数获取用户输入的列表(以字符串形式)和要删除的元素。
  2. 将输入的列表字符串转换为列表存储在 original_list 中。
  3. 使用 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()

解释

  1. 通过 input_group 函数获取用户输入的列表、元素和索引。
  2. 将列表字符串转换为列表,将索引转换为整数。
  3. 判断索引是否在合理范围(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()

解释

  1. 使用 input_group 获取用户输入的数字列表(以字符串形式)。
  2. 使用列表推导式将输入的字符串元素转换为浮点数存储在 original_list 中。
  3. 调用 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()

解释

  1. 使用 input_group 函数获取用户输入的列表和元素。
  2. 将列表字符串转换为列表。
  3. 使用 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()

解释

  1. 使用 input_group 函数从用户那里获取一个列表(以字符串形式输入)和两个索引。
  2. 将列表字符串通过 split(',') 方法转换为列表,并将输入的索引转换为整数。
  3. 检查输入的索引是否在合法范围(0 到列表长度减 1),若合法则交换两个索引位置的元素,否则输出错误提示。
  4. 最后使用 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()

解释

  1. 使用 input_group 函数让用户输入列表和切片所需的三个参数(起始索引、结束索引、步长)。
  2. 将输入的列表字符串转换为列表,并将切片参数转换为整数。
  3. 进行列表切片操作,将结果存储在 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()

解释

  1. 使用 input_group 函数获取用户输入的数字列表(以字符串形式),并将其元素转换为整数存储在 original_list 中。
  2. 初始化一个空列表 even_list 用于存储偶数元素。
  3. 使用 for 循环遍历 original_list,使用 if 语句筛选出偶数元素添加到 even_list 中。
  4. 最后使用 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()

解释

  1. 使用 input_group 函数获取用户输入的列表(以字符串形式),并将其存储在 original_list 中。
  2. 初始化一个空列表 unique_list 用于存储不重复的元素。
  3. 遍历 original_list,使用 if 语句和 in 关键字判断元素是否已在 unique_list 中,若不在则添加。
  4. 最后使用 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()

解释

  1. 使用 input_group 函数获取用户输入的两个列表(以字符串形式)。
  2. 将两个列表字符串分别转换为列表,并使用 + 运算符合并它们。
  3. 对合并后的列表使用 sort 方法进行排序并输出结果。

点评: 本题让学生学会合并两个列表并对其排序,综合运用列表的基本操作和排序方法,通过 pywebio3 实现用户交互和结果展示,巩固列表操作技能。

总结

本节课的核心内容是对列表的常用内置方法展开了深入学习哦 我们一起探索了列表这个强大的数据结构所拥有的众多内置方法,这些方法为我们处理列表中的元素提供了丰富多样的操作手段呢 从元素的添加、删除、插入,到元素的查找、排序、计数,再到列表的复制、反转等等,我们都进行了详细的学习和讨论。为了让大家更好地掌握这些知识,我们还精心设计并完成了大量的练习题,让大家在实践中不断尝试和运用这些内置方法,亲身体验它们在不同场景下的使用方式和效果呢 希望通过这些学习和练习,大家能够更加熟练地运用列表的内置方法,能够更加得心应手地操作列表数据,为今后解决更加复杂的编程问题打下坚实的基础哦 让我们继续在编程的道路上探索,不断提升自己的编程技能,一起向着更高的编程水平迈进吧!

宝子们,我在 Python 的世界里摸爬滚打十余载,积累了不少心得体会。如今想把这些年的经验和知识毫无保留地分享给有缘的小伙伴。要是你对 Python 学习感兴趣,欢迎来试听一二,也可以随时在评论区留言或者私信我,咱们一起探讨,共同进步,开启 Python 学习的奇妙之旅!

人生苦短, 我用Python, 坚持每天学习, 坚持每天进步一点点...