【Python】对一个字符串中的所有英文字母进行排序

22 篇文章 0 订阅
12 篇文章 0 订阅

题目

对一个字符串中的所有英文字母进行排序

栗子

字符串
a = 'hello word'
排序后结果:
['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

code

本题采用了两种方法进行操作;

方法一

# 方法一:使用sorted
def word_sort_m1(words):
    # 先转换成列表
    tmp = [i for i in words if i != ' ']
    res = sorted(tmp)
    return res

if __name__ == '__main__':
    a = 'hello word'
    res_1 = word_sort_m1(a)
    print("res_1 : ", res_1)
   

结果

res_1 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

方法二

# 方法二:转成对应数字排序,排完之后再转成对应的字母
def word_sort_m2(words):
    res3 = [ord(i) for i in words if i != ' ']
    for i in range(len(res3)):
        for j in range(len(res3) - i - 1):
            if res3[j] > res3[j + 1]:
                res3[j], res3[j + 1] = res3[j + 1], res3[j]
    return [chr(i) for i in res3]


if __name__ == '__main__':
    a = 'hello word'
    res_2 = word_sort_m2(a)
    print("res_2 : ", res_2)

结果

res_2 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

从大道小的排序

刚才排序后的两种结果都是从小到大的排序,如果在实际过程中可能会用到从大道小的场景,我们挑第二种方式做变更

# 方法二:转成对应数字排序,排完之后再转成对应的字母
def word_sort_m2(words):
    res3 = [ord(i) for i in words if i != ' ']
    for i in range(len(res3)):
        for j in range(len(res3) - i - 1):
            if res3[j] < res3[j + 1]:
                res3[j], res3[j + 1] = res3[j + 1], res3[j]
    return [chr(i) for i in res3]

if __name__ == '__main__':
    a = 'hello word'
    res_2 = word_sort_m2(a)
    print("res_2 : ", res_2)

结果

res_2 :  ['w', 'r', 'o', 'o', 'l', 'l', 'h', 'e', 'd']

第一种方法也很好做倒序,只需要一个参数即可以解决这个问题:

# 方法一:使用sorted
def word_sort_m1(words):
    # 先转换成列表
    tmp = [i for i in words if i != ' ']
    res = sorted(tmp,reverse=True)
    return res

在sorted中添加一个reverse=True就OK了;
说的讲解一种方式,没有刹住车两种方式都给讲出来了~~~

汇总code

# 对一个字符串中的所有英文字母进行排序

# 方法一:使用sorted
def word_sort_m1(words):
    # 先转换成列表
    tmp = [i for i in words if i != ' ']
    res = sorted(tmp)
    return res


# 方法二:转成对应数字排序,排完之后再转成对应的字母
def word_sort_m2(words):
    res3 = [ord(i) for i in words if i != ' ']
    for i in range(len(res3)):
        for j in range(len(res3) - i - 1):
            if res3[j] > res3[j + 1]:
                res3[j], res3[j + 1] = res3[j + 1], res3[j]
    return [chr(i) for i in res3]


if __name__ == '__main__':
    a = 'hello word'
    res_1 = word_sort_m1(a)
    res_2 = word_sort_m2(a)
    print("res_1 : ", res_1)
    print("res_2 : ", res_2)

结果

res_1 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']
res_2 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

欢迎关注微信公众号、blibli频道:魔都吴所谓,获取更多资源分享与行业交流的信息~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都吴所谓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值