python - 使用 Python,有没有更优雅的方法来查找列表中的第二大数字?
问题描述
我在求职面试中提出了这个问题,我想知道是否有不同的方法来解决这个问题。最好使用 Python 3。
给定 [20,40,20,60,80] 的列表,找到第二高的数字。
这个想法是删除重复项。在一个解决方案中,我遍历了列表,并将任何唯一值添加到唯一值列表中。我这样做的另一种方法是将列表转换为集合并返回列表,然后获取第二个数字。
所以这就是问题所在。有没有更好的方法使用 Python 3 来做到这一点?
这是我以两种不同方式解决的代码。
def second_item_method_1():
my_list = [20,40,20,60,80]
my_set = set(my_list)
my_list = list(my_set)
my_list.sort()
print(my_list[1])
def second_item_method_2():
my_list = [20,40,20,60,80]
unique_list = []
for x in my_list:
if x not in unique_list:
unique_list.append(x)
print(my_list[1])
second_item_method_1()
second_item_method_2()
还有其他可能的解决方案吗?
解决方案
def third_item_method():
list1 = [20, 40, 20, 60, 80]
mx=max(list1[0],list1[1])
secondmax=min(list1[0],list1[1])
n =len(list1)
for i in range(2,n):
if list1[i]>mx:
secondmax=mx
mx=list1[i]
elif list1[i]>secondmax and mx != list1[i]:
secondmax=list1[i]
else:
if secondmax == mx:
secondmax = list1[i]
print("Second highest number is : ",str(secondmax))
third_item_method()
资源:https://www.geeksforgeeks.org/python-program-to-find-second-largest-number-in-a-list/
推荐阅读
- css - 联系表格 7 样式 [多选]
- android - Android 渲染:遍历耗时较长,主线程暂停
- python - Selenium Firefox Webdriver 登录公司 Sharepoint 与 Python 的斗争
- gradle - 如何在 gradle plugins 块中使用环境变量?
- php - Coinbase API PHP 获取当前资产 - 嵌套对象数组
- sql - 替换选择中的值
- node.js - 读取 kafka 主题并通过 Rest API 公开数据以供 prometheus 抓取(Nodejs)
- cytoscape.js - 当用户拖动并释放节点时,如何在 cytoscape 中捕获数据的位置?
- json - 为什么 rapidjson 有错误并且说 json 文件是 NULL 而它有数据?
- python - 我如何为熊猫结合 np.where 和 fillna