python3.0列表排序方法_Python如何实现对列表的排序

在实际开发中,关于对列表的排序我们会经常遇到。python为我们提供了两种关于对列表的排序方法。一起来看看。

使用列表对象的sort()方法实现

sort方法语法格式:

listname.sort(key = none,reverse = False)

参数说明:

listname: 表示要排序的列表

key: 表示在指定列表选择一个用于比较的键,如果设置 'key = str.lower' ,则表示在排序的时候不区分大小写。

reverse:可选参数,如果将其指定为True,表示降序排列,如果为False,则表示为升序排列

例如:

grade = [85,56,95,45,73,81,83,64,92,77]

print('原列表',grade)grade.sort()

print('升序',grade)grade.sort(reverse=True)

print('降序',grade)

执行上述代码结果如下:

原列表 [85, 56, 95, 45, 73, 81, 83, 64, 92, 77]

升序 [45, 56, 64, 73, 77, 81, 83, 85, 92, 95]

降序 [95, 92, 85, 83, 81, 77, 73, 64, 56, 45]

使用sort()方法排序比较简单,但是使用sort()方法对字符串列表排序的时候,采用的是大写优先原则,就是说先按照大写字母顺序排列,再按照小写字母顺序排列。是否按照大小写顺序排列主要取决于参数key,下面请细看示例。

NBA = ['Bryant','James','curry','durant']

print('原列表',NBA)NBA.sort()

print('区分大小写',NBA)NBA.sort(key = str.lower)

print('不区分大小写',NBA)

执行上述代码结果如下:

原列表 ['Bryant', 'James', 'curry', 'durant']

区分大小写 ['Bryant', 'James', 'curry', 'durant']

不区分大小写 ['Bryant', 'curry', 'durant', 'James']

说明:

采用sort()方法排序时,对中文支持不友好,排序的结果和我们平时的笔画或者拼音都是不一样的,如果想要实现对中文列表的排序,就需要自己手动写方法来实现。

使用内置函数sorted()函数实现

在python中还带有一个内置的sortd()函数,首先来看看它的语法格式:

sorted(intrable, key = None, revrese = False)

参数说明:

intrable: 表示要排序的列表名称

key: 表示在指定列表选择一个用于比较的键,如果设置 'key = str.lower' ,则表示在排序的时候不区分大小写。

revrese:可选参数,如果将其指定为True,表示降序排列,如果为False,则表示为升序排列

例如:

grade = [85,56,95,45,73,81,83,64,92,77]

print('原列表',grade)grade.sort()

print('升序',grade)grade.sort(reverse=True)

print('降序',grade)

执行上述代码结果如下:

原列表 [85, 56, 95, 45, 73, 81, 83, 64, 92, 77]

升序 [45, 56, 64, 73, 77, 81, 83, 85, 92, 95]

降序 [95, 92, 85, 83, 81, 77, 73, 64, 56, 45]

说明:

列表对象的sort()方法和内置函数sorted()方法基本相同,不同之处就在于

sort方法会在原list上直接进行排序,不会创建新的list。而sorted方法不会对原来的数据做任何改动,排序后的结果是新生成的。

如果我们不需要原来的数据而且数据是list类型,可以用sort方法,能够节省空间。否则要用sorted方法。

总的来说就是sorted方法不会对原来的数据做任何改动,排序后的结果是新生成的。所以sorted会返回一个排序过的列表!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值