Python 反转字符串(reverse)的方法小结


Posted in Python onFebruary 20, 2018

前段时间看到letcode上的元音字母字符串反转的题目,今天来研究一下字符串反转的内容。主要有三种方法:

1.切片法(最简洁的一种)

#切片法
def reverse1():
 s=input("请输入需要反转的内容:")
 return s[::-1]
reverse1()

#运行结果
In [23]: def reverse1():
 ...: s=input("请输入需要反转的内容:")
 ...: return s[::-1]
 ...: 
 ...: reverse1()

请输入需要反转的内容:你是一个小南瓜
Out[23]: '瓜南小个一是你'

参考stackflow上的答案。
原理是:This is extended slice syntax. It works by doing [begin:end:step] - by leaving begin and end off and specifying a step of -1, it reverses a string.

切片介绍:切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置开始 ,刚好在结束位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。

这样,a[1:3]返回从位置1开始,包括位置2,但是停止在位置3的一个序列切片,因此返回一个含有两个项目的切片。类似地,a[:]返回整个序列的拷贝。a[::3]返回位置3,位置6,位置9…的序列切片。

也可以用负数做切片。负数用在从序列尾开始计算的位置。例如,a[:-1]会返回除了最后一个项目外包含所有项目的序列切片,shoplist[::-1]会返回倒序序列切片。

举一个完整例子,读入用户输入并反转字符串,并写入到文件中

#!/usr/bin/python
import sys
#打开文件进行写入
myfile=open('test.txt','w') 
while 1:
 print "input your string \n"
 #readline会读入最后的换行符
 line=sys.stdin.readline()
 #判断输入是否为空字符串
 if line.strip('\n')=='':
  break
 #原输入字符串合并上反转的字符串
 allmessage=line[:-1]+line.strip('\n')[::-1]
 print allmessage
 #输入及转换后的字符串写入到文件中
 myfile.write(allmessage+'\n')
#记得关闭文件操作流
myfile.close()

用shell bash方法可以如下:

#! /bin/sh
while true
do
  echo "Pls enter your string" "\n"
  read my
  if [ -z $my ];
  then
   break
  fi
  remy=$(echo $my | rev)
  echo $my$remy
  echo $my$remy >> test.txt
done

2.递归

#递归反转
def reverse2(s):
 if s=="":
 return s
 else:
 return reverse2(s[1:])+s[0]
reverse2("sidfmawsmdisd是当面问")

#运行结果
In [24]: def reverse2(s):
 ...: if s=="":
 ...: return s
 ...: else:
 ...: return reverse2(s[1:])+s[0]
 ...: 
 ...: reverse2("sidfmawsmdisd是当面问")
Out[24]: '问面当是dsidmswamfdis'

3.借用列表,使用reverse()方法
Python中自带reverse()函数,可以处理列表的反转,来看示例:

In [25]: l=['a', 'b', 'c', 'd']
 ...: l.reverse()
 ...: print (l)
['d', 'c', 'b', 'a']

reverse()函数将列表的内容进行了反转,借助这个特性,可以先将字符串转换成列表,利用reverse()函数进行反转后,再处理成字符串。

#借用列表,使用reverse()方法
def reverse3(s):
 l=list(s)
 l.reverse()
 print("".join(l))
reverse3("soifmi34pomOsprey,,是")

#运行结果
In [26]: def reverse3(s):
 ...: l=list(s)
 ...: l.reverse()
 ...: print("".join(l))
 ...: 
 ...: reverse3("soifmi34pomOsprey,,是")
 ...: 
是,,yerpsOmop43imfios

Python字符串反转

对于str类型,python并没有reverse函数。然而,通过反向步进切片,我们可以高效地反转一串字符串。

s = 'abcde' 
s[::-1]

好吧,只支持英文字符。

以下是SpikeKing的内容

原文:http://blog.csdn.net/caroline_wendy/article/details/23438739

Python翻转字符串(reverse string), 一共包含5种方法, 其中第一种最简单, 即步长为-1, 输出字符串;

方法如下

5种方法的比较:

1. 简单的步长为-1, 即字符串的翻转(常用);
2. 交换前后字母的位置;
3. 递归的方式, 每次输出一个字符;
4. 双端队列, 使用extendleft()函数;
5. 使用for循环, 从左至右输出;

代码:

# -*- coding: utf-8 -*- 
 
#eclipse pydev, python 3.3 
#by C.L.Wang 
#time: 2014. 4. 11 
 
string = 'abcdef' 
 
def string_reverse1(string): 
 return string[::-1] 
 
def string_reverse2(string): 
 t = list(string) 
 l = len(t) 
 for i,j in zip(range(l-1, 0, -1), range(l//2)): 
 t[i], t[j] = t[j], t[i] 
 return "".join(t) 
 
def string_reverse3(string): 
 if len(string) <= 1: 
 return string 
 return string_reverse3(string[1:]) + string[0] 
 
from collections import deque 
def string_reverse4(string): 
 d = deque() 
 d.extendleft(string) 
 return ''.join(d) 
 
def string_reverse5(string): 
 #return ''.join(string[len(string) - i] for i in range(1, len(string)+1)) 
 return ''.join(string[i] for i in range(len(string)-1, -1, -1)) 
 
print(string_reverse1(string)) 
print(string_reverse2(string)) 
print(string_reverse3(string)) 
print(string_reverse4(string)) 
print(string_reverse5(string))

输出:

 fedcba
fedcba
fedcba
fedcba
fedcba

继续补充一个方法

def reverse(str):
 alist = list(str)
 alist.reverse()
 new_str = ''.join(alist)
 return new_str
print reverse('3water.com')

经测试输出完全正确。

Python里面 str[::-1] 使得字符串翻转的原理是什么

我觉得很多人不理解这个语法是把俩冒号看成一个符号了,其实这是两个冒号,而不是一个双冒号符

给你一个例子看看:

>>> a='0123456'

>>> a[1:5]'1234'

返回结果是1234,能理解么?第一位到第五位切片(初始是0位)

>>> a[1:5:2]'13'

这个呢?能理解么?1-5位切片,步进为2,所以取出来是‘13'那么问题就来了[::-1]表示的是从头到尾,步长为-1,你感受一下。你可以尝试吧-1改一下,比如[::-2]

这篇文章就介绍到这,希望大家以后多多支持三水点靠木。

Python 相关文章推荐
python实现2014火车票查询代码分享
Jan 10 Python
使用Python读取大文件的方法
Feb 11 Python
Python格式化输出%s和%d
May 07 Python
使用python爬取B站千万级数据
Jun 08 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
python如何实现int函数的方法示例
Feb 19 #Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 #Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 #Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 #Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 #Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 #Python
python快速建立超简单的web服务器的实现方法
Feb 17 #Python
You might like
PHP 图片文件上传实现代码
2010/12/29 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
python实现360的字符显示界面
2014/02/21 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
python 解决函数返回return的问题
2020/12/05 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
酒店副总经理岗位职责范本
2014/02/04 职场文书
男女朋友协议书
2014/04/23 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
德育标兵事迹材料
2014/08/24 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
导游词之介休绵山
2019/12/31 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
MySQL添加索引特点及优化问题
2022/07/23 MySQL