加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python 实现字符串反转的9种方法

发布时间:2020-12-17 17:05:39 所属栏目:Python 来源:网络整理
导读:在做leetcode的试题中,做到反转整数,就涉及到字符串反转,为了尽可能可以写出更多的方法,于是写下这篇文章 样例:如 a='123456789'?反转成 a='987654321' 第一种方法:使用字符串切片 ?a='123456789'??a?=?a[::-1]'987654321' 第二种方法:使用reversed()

在做leetcode的试题中,做到反转整数,就涉及到字符串反转,为了尽可能可以写出更多的方法,于是写下这篇文章

样例:如 a='123456789'?反转成 a='987654321'

第一种方法:使用字符串切片

>>>?a='123456789'?
>>>?a?=?a[::-1]

'987654321'

第二种方法:使用reversed() 可读行好,但速度较慢

>>>?''.join(reversed('123456789'))
'987654321'

封装使用

def?reversed_string(a_string):
????return?a_string[::-1]

>>>?reversed_string('123456789')
'123456789'

注意:

python的str对象中没有内置的反转函数

python字符串相关基础知识:

  1. python中,字符换是不可变,更改字符串不会修改字符串,而是创建一个新的字符串。

  2. 字符串是可切片,切片字符串会以给定的增量从字符串中的一个点(向后或向前)向另一个点提供一个新字符串。它们在下标中采用切片表示法或切片对象:

#?下标通过在大括号中包含冒号来创建切片:
string[start:stop:step]

#?要在大括号外创建切片,您需要创建切片对
slice_obj?=?slice(start,?stop,?step)
string[slice_obj]

第三种方法:循环从字符串提取数据,然后进行字符串拼接(慢)

def?reverse_a_string_slowly(a_string):
????new_string?=?''
????index?=?len(a_string)
????while?index:
????????index?-=?1????????????????????#?index?=?index?-?1
????????new_string?+=?a_string[index]?#?new_string?=?new_string?+?character
????return?new_string

第四种方法:循环从字符串提取数据,写入到一个空列表中,然后使用join进行字符串拼接(慢)

def?reverse_a_string_more_slowly(a_string):
????new_strings?=?[]
????index?=?len(a_string)
????while?index:
????????index?-=?1???????????????????????
????????new_strings.append(a_string[index])
????return?''.join(new_strings)

第五种方法:使用字符串拼接(慢)

def?string_reverse(a_string):
????n?=?len(a_string)
????x=""
????for?i?in?range(n-1,-1,-1):
????????x?+=?test[i]
????return?x

第六种方法:使用reduce

reduce(lambda?x,y?:?y+x,?a_string)

第七种方法:使用递归(慢)

def?rev_string(s):?
????if?len(s)?==?1:
????????return?s

????return?s[-1]?+?rev_string(s[:-1])

第八种方法:使用list()?和reverser()配合

a_string='123456789'

def?rev_string(a_string):
????l=list(a)
????l.reverse()
????return?''.join(l)

第九种方法:使用栈

def?rev_string(a_string):
????l?=?list(a_string)?#模拟全部入栈
????new_string?=?""
????while?len(l)>0:
????????new_string?+=?l.pop()?#模拟出栈
????return?new_string

参考文章:Reverse a string in Python


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读