小说python的字符串反转

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

这里列举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. 迭代切片方式性能还凑合,可读性好,在性能要求不高或是没有这么密集反转操作时,可以选择

原文发布于微信公众号 - chafezhou(gh_5b8f0c59b682)

原文发表时间:2018-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

python中的时间处理大总结

北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 ? NVIDIA 深度学习学院 带你快速进入火热的DL领域 正文共485...

18110
来自专栏java一日一条

Java8 HashMap实现原理探究

前言:Java8之后新增挺多新东西,在网上找了些相关资料,关于HashMap在自己被血虐之后痛定思痛决定整理一下相关知识方便自己看。图和有些内容参考的这个文章:...

582
来自专栏用户2442861的专栏

百度最新面试题集锦

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7348968

401
来自专栏量化投资与机器学习

【精心解读】用pandas处理大数据——节省90%内存消耗的小贴士

本文我们讨论 pandas 的内存使用,展示怎样简单地为数据列选择合适的数据类型,就能够减少 dataframe 近 90% 的内存占用。

1.6K5
来自专栏北京马哥教育

Python 工匠:善用变量来改善代码质量

1398
来自专栏顶级程序员

Python 工匠:善用变量来改善代码质量

我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

853
来自专栏磐创AI技术团队的专栏

快速学习 Python 的全套 14 张思维导图(附高清版下载)

基础知识图一包括了基本规则、Python语言特点、计算机语言、如何运行Python、变量赋值五个方面,辅助你快速掌握Python编程的基底知识。

613
来自专栏编程

手把手教你半个小时用python语言编程出你的第一个程序

学习目标 知道有序的软件开发过程的步骤。 了解遵循输入、处理、输出(IPO)模式的程序,并能够以简单的方式修改它们。 了解构成有效Python标识符和表达式的规...

2215
来自专栏开发 & 算法杂谈

LeetCode之Implement strStr()

Returns the index of the first occurrence of needle in haystack, or -1 if needl...

554
来自专栏JetpropelledSnake

Python入门之字符编码

一、字节编码的基础知识 一、计算机基础知识 #1 我们的程序都是运行在特定的操作系统内,例如window,linux,mac等等 #2 运行应用程序,需要要操作...

2918

扫码关注云+社区