菜单

sort、sorted高等排序-Python三.柒 And 算法<7>

2019年5月8日 - 皇家赌场系统

1、sort**(**, key=None,reverse=False*)
**

sort()接受四个参数,那五个参数只好通过重大字(关键字参数)传递。

>>> test=["A","a","E","W","o"]
>>> test.sort()
>>> test
['A', 'E', 'W', 'a', 'o']
>>>
>>> test.sort(key=lambda x:x.lower())
>>> test
['A', 'a', 'E', 'o', 'W']
>>>

  key还是可以是相比较函数functools.cmp_to_key(func),该函数根本用 Python 3在此以前Python版本,因为 Python 3中不支持相比函数。

>>> from functools import cmp_to_key
>>> test=[[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
>>> myKey=cmp_to_key(lambda x,y:y[0]-x[0] if x[0]!=y[0] else x[1]-y[1]) #x 代表后面的数 y代表前面的数
>>> test.sort(key=myKey)
>>> test
[[7, 0], [7, 1], [6, 1], [5, 0], [5, 2], [4, 4]]

 2、sorted“(iterable, *\, key=None, reverse=False)
**

不改造原排序,在原排序的别本上修修改改,重返新排序。其余与sort一样。

>>> test1=[[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
>>> sorted(test1,key=myKey)
[[7, 0], [7, 1], [6, 1], [5, 0], [5, 2], [4, 4]] #返回新的排序
>>> test1
[[7, 0], [4, 4], [7, 1], [5, 0], [6, 1], [5, 2]] #test1没变

 

插入一道算法题:

LeetCode.40陆. 依照身高重建队列<7>

假诺有打乱顺序的一批人站成八个队列。
每个人由3个平头对(h, k)表示,其中h是其1位的身高,k是排在此人前面且身高超过或等于h的食指。
编写多个算法来重建那几个队列。

注意:
总人数有限1100人。

示例

输入:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

输出:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

思路:先按大到小排,先把大的排好队,小的在往大的队列插入,那样前边排好的连串就不会境遇震慑。

class Solution:
    def reconstructQueue(self, people):
        """
        :type people: List[List[int]]
        :rtype: List[List[int]]
        """
        from functools import cmp_to_key
        key1 = cmp_to_key(lambda x, y: y[0] - x[0] if x[0] != y[0] else x[1] -y[1])
        people.sort(key=key1)  # 排完序后[[7, 0], [7, 1], [6, 1], [5, 0], [5, 2], [4, 4]]
        sort_people=[]
        for p in people:
            sort_people.insert(p[1],p)
        return sort_people

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图