梦回凡尘几寸欢 发表于 2022-7-29 09:50:32

列表排序

本帖最后由 青出于蓝 于 2022-7-29 09:58 编辑

sorted(t, key=len)
['Pen', 'Book', 'FishC', 'Apple', 'Banana']


为什么结果中FishC在Apple前边长度不都是一样的吗

tommyyu 发表于 2022-7-29 09:53:19

sorted使用的是快速排序,快速排序不稳定,顺序也不稳定

青出于蓝 发表于 2022-7-29 09:57:46

因为原列表中‘Fishc’相对于'Apple'位置更靠前

p.s 发代码最好用代码样式

梦回凡尘几寸欢 发表于 2022-7-29 10:03:35

青出于蓝 发表于 2022-7-29 09:57
因为原列表中‘Fishc’相对于'Apple'位置更靠前

p.s 发代码最好用代码样式

原代码是
t = ["FishC", "Apple", "Book", "Banana", "Pen"]
sorted(t)
sorted(t, key=len)
在第二行的时候就已经排序完了,这时apple在fishc前边的

青出于蓝 发表于 2022-7-29 10:04:59

梦回凡尘几寸欢 发表于 2022-7-29 10:03
原代码是
t = ["FishC", "Apple", "Book", "Banana", "Pen"]
sorted(t)


>>> sorted(t)
['Apple', 'Banana', 'Book', 'FishC', 'Pen']
>>> t
['FishC', 'Apple', 'Book', 'Banana', 'Pen']

sorted函数不会改变原列表!
所以fishc还是在apple之前

梦回凡尘几寸欢 发表于 2022-7-29 10:09:19

青出于蓝 发表于 2022-7-29 10:04
sorted函数不会改变原列表!
所以fishc还是在apple之前

奥奥明白了 也就是说sorted(t,key=len)处理的还是原来的t,忘了sorted是生成一个新的列表这个事了
页: [1]
查看完整版本: 列表排序