栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python学习-字符串排序,排序规则:小写<大写<奇数<偶数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python学习-字符串排序,排序规则:小写<大写<奇数<偶数

  • 我的思路:使用ascii码进行排序

原字符串:

s = 'asdf234GDSd6sf23'

核心是利用sorted高阶函数,写一个lamba函数指定排序条件。
我们回顾一下题目要求:小写字母-大写字母-奇数-偶数
查看一下ASCII码表

我们发现ASCII码的顺序是按照:数字-大写字母-小写字母 的顺序排列的
那么,只需要想办法让偶数的ASCII码比奇数的ASCII码小,即:偶数-奇数-大写字母-小写字母,再以降序的方式排列即可达到题目要求。
我这里是将偶数的ASCII码值减去了10(这样偶数的ASCII码:38,40,42,44,46。奇数的ASCII码:49,51,53,55,57)

P.S. 你可以发现其实偶数的ASCII码减去8就能满足需求,但我觉得10比较好看嘿嘿

  • 代码如下:
s = 'asdf234GDSd6sf23'
print(sorted(s, key=lambda x: ord(x)-10 if x.isdigit() and int(x)%2 == 0 else ord(x), reverse=True))
  • 自定义一个函数的写法:
s = 'asdf234GDSd6sf23'
def sort(str1):
    for i in str1:
        # 偶数的ascii码减10,奇数和字母按照正常ascii码来排序
        if i.isdigit() and int(i) % 2 == 0:
            return ord(i)-10
        else:
            return ord(i)

print(sorted(s, key=sort, reverse=True))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030217.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号