Python字符串排序的两种方法详解

Python中没有直接对字符串排序的方法,下面介绍两种方法对字符串进行排序。
第一种方法,将字符串转换成数组,对数组排序后,再转换成字符串。代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def main():
	# 字符串
    s = "HelloWorld!"
    # 转换成数组
    l = list(s)
    # 对数组排序,注意,该方法没有返回值
    l.sort()
    # 转换成数组
    s = "".join(l)
    print(s)
    # 结果如下:
    # !HWdellloor

if __name__ == "__main__":
    main()

第二种方法,原理和上面的一样,只不过是使用lambda表达式。先展示代码,再详细解释代码。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def main():
	s = "HelloWorld!"
    s = "".join((lambda x: (x.sort(), x)[1])(list(s)))
	print(s)
	# 结果如下:
    # !HWdellloor

if __name__ == "__main__":
    main()

来分析分析语句“s = “”.join((lambda x: (x.sort(), x)[1])(list(s)))”。首先最外层是一个很基础的函数,在一个字符串中加入元素(lambda x: (x.sort(), x)[1])(list(s)),该元素是一个匿名函数。代码 (lambda x: (x.sort(), x)[1]) 表示函数体,(list(s)) 表示该函数的参数,就是将 s 转换成 list 传入到该匿名函数中。匿名函数接收 list,在该函数体内用形参 x 表示。函数体内的 (x.sort(), x)[1] 就是该匿名函数的返回值。为什么要这么写的?因为 Python 中 list 的排序方法没有返回值,所以必须先将 list 排序,然后在返回 list。但是匿名函数只能有一句代码,所以用该语句 (x.sort(), x)[1] 来返回排序后的 list。在这个 tuple 中,x.sort() 返回None, 但是此时x已经排好序了,所以第二个 x 已经是有序的 list,最后加一个[1],表示返回的是有序的 x。
代码是网上找的,觉得很精妙,就写一篇自己的理解。

  • 17
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值