python——sort( )、sorted( ) 、列表套元组的排序

一、sort( ) 和 sorted( )二者区别:

1、sort( )是列表这个类里的方法,它只能对列表进行排序,而且是直接在列表上进行操作,也就是说,排序后会将对原列表的值进行覆盖,(或者叫 排序后原列表的值会发生改变、会改变原对象的值),无返回值

2、sorted( )它是python的内置函数,可以对任意的可迭代对象进行排序结果返回的是一个列表,也就是说,排序后的对象类型全部为list,而原对象不会受到任何影响,即:不改变原对象的值。

举例:

a = [1, 3, 5, 2, 1]
print(sorted(a))    # 返回一个列表
print(a)  # 不会改变原对象的值
结果:
[1, 1, 2, 3, 5]
[1, 3, 5, 2, 1]   


a = [1, 3, 5, 2, 1]
print(a.sort())
结果:
None    # 说明sort() 没有返回值

可见,sort( )是没有返回值的,所以正确使用方法如下:

a = [1, 3, 5, 2, 1]
a.sort()
print(a)
结果:
[1, 1, 2, 3, 5]   # 原列表的值发生改变

二、二者语法格式:

1、sort( )语法格式:

        列表名.sort(key=None,reverse=False)

2sorted( )语法格式:

        sorted(iterable,key=None,reverse=False)

二者的参数的含义都是一样的,即:

iterable:要进行排序的可迭代对象。

key:表示排序依据,通常为函数名,eg. abs、str\lower、str.upper等,或者是以函数指定可迭代对象中的某个元素来进行排序(常结合lambda()函数使用)。

reverse:排序规则,reverse=True 表示降序,reverse=False 表示升序,默认为升序。

~~~~~~前方高能~~~~~~~~~~

注意:

当要排序的对象为列表套元组时,例如:

[(1,2),(2,3),(3,4),(4,5)]

        此时,如果不写key的时候,默认是先按元组的第一个成员进行排序,当第一个成员的值有相同的时候,会再对这些相同的值,按第二个成员进行排序。如果第一个成员的值没有相同的,那就只按第一个成员进行排序。


例题1:元组的第一个成员中值有相同的。

例如:(1,3)和(1,2)元组的第一个元素相同,都是1,所以根据第一个成员排序完,会再根据第二个成员进行排序。

# 用sorted()函数进行排序  ————它是python内置函数
# 法1 默认按元组的第一个成员进行排序,如果第一个成员有相同的,再对这些相同的按第二个成员进行排序。
a = [(1, 3), (1, 2), (0, 4)]
b = sorted(a)     
print(b)       # [(0, 4), (1, 2), (1, 3)]


# 法2 用索引来写

a = [(1, 3), (1, 2), (0, 4)]    # (x[0], x[1]) 改成[x[0], x[1]],结果也是一样。
b = sorted(a, key=lambda x: (x[0], x[1]))   # x[0]先按第一个成员, x[1] 按第二个成员
print(b)     #[(0, 4), (1, 2), (1, 3)] 


# 用sort()进行排序  ——————它是列表这个类里的方法
# 法1 用默认的方式来写
a = [(1, 3), (1, 2), (0, 4)]
a.sort()
print(a)  # [(0, 4), (1, 2), (1, 3)]


# 法2 用索引

a = [(1, 3), (1, 2), (0, 4)]
a.sort(key=lambda x: (x[0], x[1]))
print(a)     # [(0, 4), (1, 2), (1, 3)]

例题2:元组的第一个成员中没有相同的。那就只按第一个成员进行(升序)排序。

a = [(2, 2), (3, 4), (4, 1), (1, 3)]
b = sorted(a)
print(b)

结果:
[(1, 3), (2, 2), (3, 4), (4, 1)

延申:

1、如果只按元组的第一个成员进行升序排序。(元组的第一个成员,它的下标为0 )

a = [(1, 3), (1, 2), (0, 4)]
b = sorted(a, key=lambda x: x[0])
print(b)

结果:
[(0, 4), (1, 3), (1, 2)]

2、 如果只按元组的第二个成员进行升序排序。

a = [(1, 3), (1, 2), (0, 4)]
b = sorted(a, key=lambda x: x[1])
print(b)

结果:
[(1, 2), (1, 3), (0, 4)]

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值