.sort()排序问题。
def takeSecond(elem):return elem
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x)
# [(4, 1), (2, 2), (1, 3), (3, 4)]
x.sort(key=lambda a: a)
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)]
这个key=takeSecond说是指定第二个元素为排序方法,这个不理解如何以第二个元素为排序方法的。 切片是第二个元素
等价于x.sort(key=lambda takeSecond: takeSecond) 逃兵 发表于 2021-8-12 11:06
切片是第二个元素
等价于x.sort(key=lambda takeSecond: takeSecond)
还是不太懂,我想知道它是哪种规则排列的,比如升序降序之类的。主要现在我不太理解这个规则 Underwood 发表于 2021-8-12 11:24
还是不太懂,我想知道它是哪种规则排列的,比如升序降序之类的。主要现在我不太理解这个规则
https://www.runoob.com/python/att-list-sort.html 逃兵 发表于 2021-8-12 11:28
https://www.runoob.com/python/att-list-sort.html
你发错了 你发的python2的 本帖最后由 kogawananari 于 2021-8-12 13:53 编辑
原本python2的sort有cmp参数可以控制用什么排序以及排序升降 现在python3里没了{:10_289:}
可以自己实现一个sort函数 算法是快速排序 然后快排中交换变量 用的是你传入的cmp函数 处理交换的两个对象就行了一般默认是两个对象做减法 大于0就交换位置如果你传进去的cmd函数return的是差小于0 就会变成降序做差的是两个对象的第二项或者其他属性 也可以实现 kogawananari 发表于 2021-8-12 13:46
原本python2的sort有cmp参数可以控制用什么排序以及排序升降 现在python3里没了
{:10_302:}又发错了吗
https://www.runoob.com/python3/python3-att-list-sort.html 逃兵 发表于 2021-8-12 13:52
又发错了吗
https://www.runoob.com/python3/python3-att-list-sort.html
主要是你发的里面那个cmp参数实属太犯规 另外两个参数key和reverse意义不大了 如果cmp能用也就没这个问题了 看我另一个回答{:10_293:} Underwood 发表于 2021-8-12 11:24
还是不太懂,我想知道它是哪种规则排列的,比如升序降序之类的。主要现在我不太理解这个规则
他是按照你 key 函数中取出的数大小排序,默认从小到大
页:
[1]