📜  Python-测验| Python列表测验|问题 8(1)

📅  最后修改于: 2023-12-03 15:19:12.884000             🧑  作者: Mango

Python-测验| Python列表测验|问题 8

简介

在 Python 中,列表是一种有序可变数据集合。问题 8 的主题是关于 Python 列表的一道测验题目。通过这道问题的练习,可以加强对 Python 列表的操作和理解。

问题描述

给定一个列表 lst 和一个数字 n,请编写一个函数 find_nth_smallest(),返回列表中第 n 小的元素。如果 n 的值超出了列表的长度,返回 None

函数签名如下:

def find_nth_smallest(lst: list, n: int) -> any:
    pass

注意:

  • 列表中可能包含重复元素。
  • 如果列表为空或 n 的值为负数,返回 None
示例
assert find_nth_smallest([1, 2, 3, 4, 5], 2) == 2
assert find_nth_smallest([5, 2, 3, 1, 4], 3) == 3
assert find_nth_smallest([1, 2, 3, 4, 5], 6) == None
assert find_nth_smallest([1, 2, 2, 3, 3], 4) == 3
assert find_nth_smallest([], 1) == None
assert find_nth_smallest([1, 2, 3, 4, 5], -1) == None
解题思路

首先,需要对列表进行排序,可以使用列表的 sort() 方法,这会将列表本身进行排序。其次,可以使用 Python 中的列表切片,获取前 n 个元素,再取最后一个即为第 n 小的元素。

需要注意的是,当输入的 n 的值大于列表的长度时,需要返回 None

参考代码

下面是一种可能的实现:

def find_nth_smallest(lst: list, n: int) -> any:
    if n < 1 or len(lst) < n:
        return None
    lst.sort()
    return lst[:n][-1]
总结

本文介绍了 Python 中列表的一个常见问题,通过这道测验题目的练习,可以熟悉列表的操作和应用。