如何在Python中找到最大或最小的项目?
本文针对希望使用Python查找最大或最小项目的开发人员。我将展示一些使用方法,并为您总结最佳方法。
方法– 1:在列表上切片方法
如果您只是想查找单个最小或最大项,即N = 1,则使用min()
和会更快max()
。
让我们开始生成一些随机整数。
import random# Create a random list of integers
random_list = random.sample(range(1,10),9)
random_list
[2、4、5、1、1、7、9、6、8、3]
查找最小和最大的项目(N = 1)
# Find the smallest number (N=1)min
(random_list)
1
# Find the largest number (N=1)max
(random_list)
9
找到3个最小和最大的项目(N = 3)
同样,如果N与集合本身的大小大致相同,则通常先对其进行排序并分割N会更快。
# lets get the nsmallest using a slice approach(N=3)sorted(random_list)[:3]
[1,2,3]
# lets get the nlargest using a slice approach(N=3)sorted(random_list)[-3:]
[7、8、9]
方法– 2:列表上的heapq方法
heapq模块具有两个函数-nlargest()nsmallest()
,可用于查找nsmallest或nlargest项。
import heapqimport random
random_list = random.sample(range(1,10),9)
# nsmallest items (N=3)
heapq.nsmallest(3,random_list)
[1,2,3]
# nlargest items (N=3)heapq.nlargest(3,random_list)
[9,8,7]
如果您有一些更复杂的数据,heapq函数具有可以使用的关键参数。
import heapqgrandslams = [
{'name':'Roger Federer','titles':20},
{'name:'Rafel Nadal','titles':19},
{'name':'Novak Djokovic','titles':17},
{'name':'Andy Murray','titles':3},
]
# Players with less titles (N=3)
less = heapq.nsmallest(3,grandslams,
key = lambdas:s['titles'])
less
[{'name':'Andy Murray','titles:3},{'name':'Novak Djokovic','titles':17},{'name':'Rafel Nadal','titles':19 }]
# Players with highest titles (N=3)more = heapq.nlargest(3,grandslams,key = lambdas:s['titles'])
more
[{'name':'Roger Federer','titles:20},{'name':'Rafel Nadal','titles':19},{'name':'Novak Djokovic','titles':17 }]
从DataFrame中找到N个最大和最小的元素。
好吧,世界是由CSV文件组成的,是的,它们是!
因此,非常安全地假设在python开发的某个时刻会遇到CSV和显然是DataFrame。
我将向您展示几种从DataFrame中找到N个最大/最小的方法。
在第一种方法中,我们将使用sort_values()方法对值进行排序,并使用head方法获取值。
import pandas as pdimport io
# Define your data
data = """
player,titles
Djokovic,17
Nadal,19
Federer,20
Murray,3
"""
throwaway_storage = io.StringIO(data)
df = pd.read_csv(throwaway_storage,index_col = "player")
# nsmallest (N = 3)df.sort_values("titles").head(3)
头衔 | |
---|---|
播放器 | |
默里 | 3 |
德约科维奇 | 17 |
纳达尔 | 19 |
# nlargest (N = 3)df.sort_values("titles",ascending = False).head(3)
头衔 | |
---|---|
播放器 | |
费德勒 | 20 |
纳达尔 | 19 |
德约科维奇 | 17 |
除了使用.head()方法对行进行排序以外,我们可以调用.nsmallest()和.nlargest()方法。
df.nsmallest(3,columns="titles")
头衔 | |
---|---|
播放器 | |
默里 | 3 |
德约科维奇 | 17 |
纳达尔 | 19 |
df.nlargest(3,columns = "titles")
头衔 | |
---|---|
播放器 | |
费德勒 | 20 |
纳达尔 | 19 |
德约科维奇 | 17 |
结论
如果您尝试查找数量相对较少的项目,则nlargest()
和nsmallest()
函数最合适。
如果您只是想查找单个最小或最大项(N = 1),则使用min()
和会更快max()
。
同样,如果N与集合本身的大小大致相同,则通常先对其进行排序并进行切片会更快。
总之,python的实际实现nlargest()
和nsmallest()
适应python的运行方式,并将代表您执行其中的一些优化。
以上是 如何在Python中找到最大或最小的项目? 的全部内容, 来源链接: utcz.com/z/348925.html