首页 > 解决方案 > 初学者——调用函数时如何对列表进行排序?

问题描述

在下面的代码中,我试图在调用函数时按字母顺序对水果列表进行排序,并且只获取列表中的前 2 个。我知道最后一行是问题,但不知道如何解决它。谢谢!

def listed(food):
  for x in food:
    print(x)

fruits = ["apple", "banana", "cherry", "apricot"]
listed(fruits[0:2].sort())

标签: python-3.x

解决方案


您需要先排序,然后切片。该.sort()方法不返回 sorted list,它在原地运行并返回None,因此它对于单行器没有用,但您可以使用内置的sorted它返回输入迭代的浅表副本作为list排序顺序)去做:

listed(sorted(fruits)[:2])

对于较大的输入(具有类似较小的输出),您可能希望避免存储整个结果只是为了切掉两个元素;heapq.nsmallest将允许这样做

import heapq  # At top of file

...

listed(heapq.nsmallest(2, fruits))

推荐阅读