📅  最后修改于: 2023-12-03 15:19:12.884000             🧑  作者: Mango
在 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 中列表的一个常见问题,通过这道测验题目的练习,可以熟悉列表的操作和应用。