首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小说python的字符串反转

小说python的字符串反转

作者头像
用户2196567
发布2018-07-02 12:10:26
6630
发布2018-07-02 12:10:26
举报
文章被收录于专栏:chafezhouchafezhou

字符串反转,这个大家平常应该时长碰到,特别是面试时,通常还有一些变种,如:判断回文。

这里列举python中的三种实现方式(切片,反向迭代,经典就地反转算法),小说一把字符串反转。

经典算法

对于从其他语言转向python的小伙伴们,最直接的实现很大概率会是这样的

def reverse_string_classic(src):
    """
    字符串反转,经典算法
    :param src: 源字符串 
    :return: 反转后字符串
    """
    chars = list(src)
    for i in range(len(src) // 2):
        tmp = chars[i]
        chars[i] = chars[len(src) - i - 1]
        chars[len(src) - i - 1] = tmp
    return ''.join(chars)

熟悉的c/c++的味道,没有任何python的美感,但就是这么直接了当,不伤脑

切片

了解和熟悉python切片操作的同学,应该会这么做了

def reverse_string_slicing(src):
    """
    字符串反转,切片实现
    :param src: 源字符串
    :return: 反转后字符串
    """
    return src[::-1]

就是这么pythonic,但不熟悉的小伙伴就是一脸懵逼,这个伤脑

反向迭代

熟悉和了解python的iterator的小伙伴还有这种实现方式

def reverse_string_iterate(src):
    """
    字符串反转,反向迭代实现
    :param src: 源字符串
    :return: 反转后字符串
    """
    return "".join(reversed(src))

这看着也很pythonic,感觉无理解成本

性能PK

简单的对这三种方式做个性能测试

从测试结果可见:

三种方式存在很大的差距,切片方式最快,反向迭代的方式比切片慢了近7倍,而经典方式比切片慢了近50倍

简单总结:

1. 经典方式,直接放弃吧,unpythonic,效率还差

2. 如果单从效率上看,切片方式是最佳选择,但可读性差,理解成本高

3. 迭代切片方式性能还凑合,可读性好,在性能要求不高或是没有这么密集反转操作时,可以选择

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 chafezhou 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档