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实现巡检系统(solaris)示例
Apr 02 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
python编写朴素贝叶斯用于文本分类
Dec 21 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Selenium元素的常用操作方法分析
Aug 10 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
Django Form设置文本框为readonly操作
Jul 03 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
Python进行统计建模
Aug 10 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
PHP多进程编程实例详解
2017/07/19 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
python中argparse模块用法实例详解
2015/06/03 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
店长助理岗位职责
2013/12/13 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
刘胡兰观后感
2015/06/16 职场文书
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js