Python笔记009 - sort排序

Python笔记009 - sort排序

1.sort( )

  • 该方法用来对列表中的元素进行排序
  • sort( ) 方法默认是直接比较列表中的元素的大小
l = ['zzz','sf','wwe','sc']
print('before change:')
print(l)
print(type(l))
print(id(l))
l.sort()
print('after change:')
print(l)
print(type(l))
print(id(l))
# before change:
# ['zzz', 'sf', 'wwe', 'sc']
# <class 'list'>
# 4365966336
# after change:
# ['sc', 'sf', 'wwe', 'zzz']
# <class 'list'>
# 4365966336
  • sort( ) 方法中还有一个参数 key ,可以设置根据 key(某个参照) 进行比较
  • 当我们想根据字符串的长度进行比较时,可以如下设置:
l = ['zzz','sf','wwe','sc']
print('before change:')
print(l)
l.sort(key=len) 
print('after change:')
print(l)
# before change:
# ['zzz', 'sf', 'wwe', 'sc']
# after change:
# ['sf', 'sc', 'zzz', 'wwe']

当列表中,既有字符串又有数值型的时候,可以如下设置:

l.sort(key=str)
# 这样的话,在比较的时候就会根据全是字符串的形式进行比较
# 不会对其类型进行改变

l = ['zzz','sf','wwe',22,9,1728,290, 11]
print('before change:')
print(l)
l.sort(key=str) 
print('after change:')
print(l)
# before change:
# ['zzz', 'sf', 'wwe', 22, 9, 1728, 290, 11]
# after change:
# [11, 1728, 22, 290, 9, 'sf', 'wwe', 'zzz']

当列表中既有数值型,又有数值形式的字符串的时候,可以如下设置进行比较:

l.sort(key=int)
# 这样的话,在比较的时候就会根据全是字符串的形式进行比较
# 不会对其类型进行改变

l = ['1000000','190','3',22,9,1728,290, 11]
print('before change:')
print(l)
l.sort(key=int)
print('after change:')
print(l)
# before change:
# ['1000000', '190', '3', 22, 9, 1728, 290, 11]
# after change:
# ['3', 9, 11, 22, '190', 290, 1728, '1000000']

改变顺序的话,只需要设置参数reverse=True就ok,默认是False。

l = ['1000000','190','3',22,9,1728,290, 11]
print('before change:')
print(l)
l.sort(key=int,reverse=True)
print('after change:')
print(l)
# before change:
# ['1000000', '190', '3', 22, 9, 1728, 290, 11]
# after change:
# ['1000000', 1728, 290, '190', 22, 11, 9, '3']

2.sorted( )

用法与 sort( ) 的用法基本一致,sorted( ) 适用的对象更广,可以针对任意的序列。而 sort( ) 是针对列表。

另一个不同是, sort( ) 在直接改变了原来的对象(列表),而 sorted( ) 是返回一个新的对象(序列)。

l = ['1000000','190','3',22,9,1728,290, 11]
print('before change:')
print(l)
print(sorted(l,key=int))
print('after change:')
print(l)
# before change:
# ['1000000', '190', '3', 22, 9, 1728, 290, 11]
# ['3', 9, 11, 22, '190', 290, 1728, '1000000']
# after change:
# ['1000000', '190', '3', 22, 9, 1728, 290, 11]

序列为元组的时候:

l = ('1000000','190','3',22,9,1728,290, 11)
print('before change:')
print(l)
a = sorted(l,key=int)
print('a:', a)
print('after change:')
print(l)
# before change:
# ('1000000', '190', '3', 22, 9, 1728, 290, 11)
# a: ['3', 9, 11, 22, '190', 290, 1728, '1000000']
# after change:
# ('1000000', '190', '3', 22, 9, 1728, 290, 11)

集合的时候:

l = {'1000000','190','3',22,9,1728,290, 11}
print('before change:')
print(l)
a = sorted(l,key=int)
print('a:', a)
print('after change:')
print(l)
# before change:
# {1728, 290, '3', 9, 11, '190', 22, '1000000'}
# a: ['3', 9, 11, 22, '190', 290, 1728, '1000000']
# after change:
# {1728, 290, '3', 9, 11, '190', 22, '1000000'}

字符串的时候:

l = '12930824329'
print('before change:')
print(l)
a = sorted(l,key=int)
print('a:', a)
print('after change:')
print(l)
# before change:
# 12930824329
# a: ['0', '1', '2', '2', '2', '3', '3', '4', '8', '9', '9']
# after change:
# 12930824329

可以发现使用 sorted( ) 函数的时候,都会生成一个新的列表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

统计小白er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值