赞
踩
sort() 、sorted()函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
list.sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
sort()没有返回值,但是会对列表的对象进行排序;sorted()会有返回值。
numslist = [1, 3, 5, 6, 8, 9]
numslist.sort(reverse = True)
print("降序输出:")
print(numslist)
numslist.sort(reverse = False)
print("升序输出: ")
print(numslist)
输出结果为
降序输出:
[1, 3, 5, 6, 8, 9]
升序输出:
[1, 3, 5, 6, 8, 9]
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# random.sort(key = lambda item:item[1])
# 输出类别
print('排序列表:')
print(random)
输出结果为:
排序列表:
[(4, 1), (2, 2), (1, 3), (3, 4)]
目的:如果元组里第一个元素是奇数,就用元组里第一个元素进行排序,如果元组里第一个元素是偶数,则用这个元组里的第二个元组进行大小比较。
from functools import cmp_to_key
lst = [(9, 4), (2, 10), (4, 3), (3, 6)]
def cmp(x, y):
a = x[0] if x[0] %2 == 1 else x[1]
b = y[0] if y[0] %2 == 1 else y[1]
return 1 if a > b else -1 if a < b else 0
lst.sort(key=cmp_to_key(cmp))
print(lst)
输出结果为:
[(4, 3), (3, 6), (9, 4), (2, 10)]
leetcode526相对名次
给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。
运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:
名次第 1 的运动员获金牌 “Gold Medal” 。
名次第 2 的运动员获银牌 “Silver Medal” 。
名次第 3 的运动员获铜牌 “Bronze Medal” 。
从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。
使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。
class Solution:
desc = ("Gold Medal", "Silver Medal", "Bronze Medal")
def findRelativeRanks(self, score):
ans = [""] * len(score)
arr = sorted(enumerate(score), key=lambda x: -x[1])
for i, (idx, _) in enumerate(arr):
ans[idx] = self.desc[i] if i < 3 else str(i + 1)
return ans
S = Solution()
RES = S.findRelativeRanks([10,3,8,9,4])
输出结果为:
['Gold Medal', '5', 'Bronze Medal', 'Silver Medal', '4']
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。