#字符串排序:小写<大写<奇数<偶数

博客介绍了如何使用Python的内置函数对包含数字和字母的字符串进行排序。通过调整ASCII值实现数字和字母的特定排序,同时展示了如何利用reduce和map函数将字符串'12345'转换为数值12345。这种方法巧妙地结合了高阶函数,实现了字符串处理的高效解决方案。
摘要由CSDN通过智能技术生成

 利用Ascii数值的大小和高阶函数sorted可以实现
        首先判断是数字还是字母,由于字母的ASCII都比数字的ASCIID大,其ASCII大小就不改变(小写>大写)。利用改变数字对应的ASCII值的大小来改变排序,如果是奇数,ASCII就加上100再乘-1,是偶数就加上200再乘-1。这样按照改变后的ASCII进行升序排列的结果为,偶数-奇数-大写-小写。再利用reverse参数对其降序排序,就是想要的结果了。当然也可利用多重判断循环也是可以实现的,我就不写了,你们加油哦!

s = 'asdf234GDSdsf230'
def num_sort(num):
    if num.isdigit():
        # 判断是奇数
        if int(num) % 2 == 1:
            # 获取ASCII值
            return (ord(num)+100)*-1
        else:
            return (ord(num)+200)*-1
    return ord(num)
print(''.join(sorted(s,key=num_sort,reverse=True)))

# 重写int函数,实现字符换’12345‘  转换为数值12345

利用高阶函数reduce和map

        reduce(函数,可迭代对象)  重做,将可迭代对象的数一一传入函数中返回最后的结果

        map(函数,可迭代对象)     必须接受两个参数,一个是函数,一个是可迭代对象(可多个),返回一个map类型的迭代器  
       map作用:一一映射

s = '12345'
def int(s):
    def num(string):
        # 定义个字典,用于存储1-9,实现字符串到数字的转变
        num_dict = {'0':1,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
        return num_dict[string]
     # 利用高阶函数reduce和map
    return reduce(lambda x,y:x*10+y,map(num,s))
print(int(s))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值