关于python字符串排序方法的详解

关于python字符串排序的代码大家都能查到
这里记录一下我对这串代码的理解

s = 'zxcvbnm'
s = ''.join((lambda x:(x.sort(),x)[1])(list(s)))
print(s)

将 lambda 表达式转化为自定义函数来理解,即:

def SortStr(x):
	return (x.sort(),x)[1]
s = 'zxcvbnm'
s = ''.join(SortStr(list(s)))
print(s)

函数返回值为一个元组的第二个元素,即 x
在返回 x 之前,x.sort()x 排序了,因此返回的 x是经过排序的 x



有朋友不清楚第为什么不能像下面这样写:

s = 'zxcvbnm'
s = ''.join((lambda x: x.sort())(list(s)))
print(s)

为了解释这个问题,我们可以试试执行下面的代码

s = [1, 3, 2]
print(s.sort())

结果为None,可以看出:

对于任何一个列表ss.sort()s排序,但是没有返回值
因此如果将(x.sort(),x)[1]换成x.sort(),lambda表达式的结果是None,再执行''.join(),程序会报错。



如果字符串排序的同时要去掉重复字符,可以利用 set()

s = 'zxcvbnm'
s = ''.join((lambda x:(x.sort(),x)[1])(list(set(s))))
print(s)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值