如何在Python中反转字符串_cyan20115的博客-程序员宅基地

技术标签: python  

在Python中,反转字符串最快,最简单的方法是扩展切片[::-1]

print("hello world"[::-1])    # dlrow olleh

本文将向您展示几种在Python中反转字符串的方法。

  • [::-1]逆序切片。 (好)
  • [::-1]切片工具作为函数。 (好)
  • 反向和联接(反向字符串和单词)(确定)
  • Python循环(教育目的)

1. Python Slice [::-1]

在Python中,我们可以使用[::-1]来反转字符串,也就是扩展slice 。 以下是切片语法:

string[start:stop:step]
  • start –开始位置,默认为0。(包括此字符串)
  • stop –停止位置。 (不包括此字符串)
  • stepstep切片元素,默认为1 –取每个元素,如果step = 2,则取每个第二元素。

这是一个字符串“ abcdefghijk”及其内部索引。

Index 0 and -1

  a    b    c   d   e   f   g   h   i   j   k
  0    1    2   3   4   5   6   7   8   9   10 (index starts at 0)
 -11  -10  -9  -8  -7  -6  -5  -4  -3  -2  -1  (reverse index starts at -1)

1.1步骤默认为1。此切片[2:5]将char从索引2移到索引5(不包括此char)。

print("abcdefghijk"[2:5])      # c d e
print("abcdefghijk"[2:5:1])    # c d e

"""
a  b  {c  d  e  f}  g  h  i  j  k
0  1  {2  3  4  5}  6  7  8  9  10 = index
"""

1.2此切片[2:]从索引2到字符串的末尾获取char。

print("abcdefghijk"[2:])    # c d e f g h i j k

"""
a  b  {c  d  e  f  g  h  i  j  k}
0  1  {2  3  4  5  6  7  8  9  10} = index
"""

1.3对于此slice [2::2] ,步骤为2,它将获得从索引2开始到索引末尾的偶数索引(每个第二索引)。

print("abcdefghijk"[2::2])   # c e g i k

"""
a  b  {c}  d  {e}  f  {g}  h  {i}  j  {k}
0  1  {2}  3  {4}  5  {6}  7  {8}  9  {10} = index
"""

1.4对于此切片[::-1][-1::-1] ,结果相同,字符串将反转。

print("abcdefghijk"[::-1])    # k j i h g f e d c b a
print("abcdefghijk"[-1::-1])  # k j i h g f e d c b a

"""
[::] = step default is 1.
|--------------------------------------------------->>>
{a}  {b}  {c}  {d}  {e}  {f}  {g}  {h}  {i}  {j}  {k}
{0}  {1}  {2}  {3}  {4}  {5}  {6}  {7}  {8}  {9}  {10}

[::-1] = if step is -1, reverse order.
<<<---------------------------------------------------|
{a}  {b}  {c}  {d}  {e}  {f}  {g}  {h}  {i}  {j}  {k}
{0}  {1}  {2}  {3}  {4}  {5}  {6}  {7}  {8}  {9}  {10}
"""

步长= -1
在Python slice中,如果步长为-1 ,则表示倒序,并且起始位置默认为-1

1.5对于此切片[:4:-1] ,字符串将反向直到索引4(第5个位置,排除此字符)。

print("abcdefghijk"[:4:-1])  # k j i h g f

"""
[:4:-1]
               <<<--------------------------|
a  b  c  d  e  {f}  {g}  {h}  {i}  {j}  {k}
0  1  2  3  4  {5}  {6}  {7}  {8}  {9}  {10}  = index
"""

1.6对于此切片[-2:4:-1][-2:-7:-1] ,结果是相同的。 该分片以相反的顺序获取char,从索引-2或9开始,直到索引-7或4(不包括索引)。

print("abcdefghijk"[-2:4:-1])   # j i h g f
print("abcdefghijk"[-2:-7:-1])  # j i h g f

print("abcdefghijk"[9:4:-1])    # j i h g f
print("abcdefghijk"[9:-7:-1])   # j i h g f

"""
                       <<<-----------------------|
 a    b    c   d   e   {f}   {g}   {h}   {i}   {j}  k
 0    1    2   3   4   {5}   {6}   {7}   {8}   {9}  10  = index
-11  -10  -9  -8  -7  {-6}  {-5}  {-4}  {-3}  {-2} -1   = index (reverse order)
"""

2. [::-1]作为功能

相同的slice [::-1] ,它实现为一个函数。

def reversed_string(val, start=None, stop=None):
    return val[start:stop:-1]

print(reversed_string("abcdefghijk"))           # k j i h g f e d c b a

print(reversed_string("abcdefghijk", -2, 4))    # j i h g f

3.撤消并加入

3.1此Python代码段使用两个内置函数reserved()join()来反转字符串。

string = "abcdefghijk"

print("".join(reversed(string)))

输出量

Terminal
kjihgfedcba

3.2如果我们将相同的技术与split() ,我们可以反转单词。

string = "Hello World Python Slice"

print(" ".join(reversed(string.split(" "))))

输出量

Terminal
Slice Python World Hello

4. Python循环

这段Python代码出于良好的教育目的,它将元素从最后一个索引循环到开始的索引,并将其放入列表中,最后,加入列表并返回一个字符串。

def reverse_a_string(string):
    a_list = []                         # a new list
    index = len(string)                 # total length of a string, last index

    while index:                        # loop from the last index to the beginning index
        index -= 1                      # index = index - 1 , reverse one by one
        a_list.append(string[index])    # append to the list

    return "".join(a_list)              # join everything.

result = reverse_a_string("abcdefghijk")
print(result)   # kjihgfedcba

输出量

Terminal
kjihgfedcba

参考文献

翻译自: https://mkyong.com/python/how-to-reverse-a-string-in-python/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cyan20115/article/details/106550106

智能推荐

java 内部类_Little_Cloudy的博客-程序员宅基地_建立一个成绩内部类

一、基本概念内部类:将一个类定义在另一个类里面,那么里面这个类就称为内部类(内置类,嵌套类)根据内部类定义在外部类中的位置可分为: (1)成员内部类:内部类所处位置与外部类的成员变量、成员方法并列,相当于外部类的一个成员(类) (2)局部内部类:内部类所处位置在外部类的某个成员方法体内,相当于成员方法的一个局部量(类)作用:  (1)在某种程度上实现多重继承,若B类嵌套定义

用Java对文件进行重命名_请叫我益达张的博客-程序员宅基地

昨天闲来无事,对磁盘进行了整理。当整理到F盘(放的都是电影之类的)时发现好多电影文件名字前面都有一些标识,我经常在电影天堂上下载电影,所以下载的电影名前面都会有[电影天堂www.dy2018.com]、[电影天堂www.dy2018.net]等字样,感觉很不爽。于是我就想把这些字样去掉,可是程序猿都有一些懒,我也不例外,那么多懒得一个个删除,又懒得去网上找那些批量修改文件名的软件,就想到写个程序。

php 图片处理 旋转,php图像处理(缩放、剪裁、缩放、翻转、旋转、透明、锐化)..._weixin_39901332的博客-程序员宅基地

本文章来给各同学总结了一些常用的图像处理函数,包括有缩放、剪裁、缩放、翻转、旋转、透明、锐化功能,大家可参考参考。注意事项:如果要使用php gd处理我们需要开启gd库Windows下开启PHP的GD库支持找到php.ini,打开内容,找到:;extension=php_gd2.dll把最前面的分号“;”去掉,再保存即可,如果本来就没有分号,那就是已经开启了。linux开启GD库##检测GD库是否...

SSH框架学习语录二:关注框架都有的xml配置文件和反射_我是一道光_的博客-程序员宅基地_ssh框架都要建立什么xml文件

每个牛逼的框架设计的背后都有一群头脑灵活、闷骚幽默的人。他们对待工作乐观积极,总是能拿出有效的解决方案来处理那些棘手难解的问题。         近来越发的感觉到配置文件的强大之处,也佩服第一个尝试着用这种方式分解变化、消减 耦合的程序猿。层出不穷的框架,都是有着各自的特殊使命,带着不同的解决方案在项目中大放异彩。可能我们更多在使用着框架,没多想过每一个框架都有着自己独特的设计思想,都有博人眼球的

python 读取csv文件时有空行_用Python编写的CSV文件在每一行之间都有空行。_weixin_39709262的博客-程序员宅基地

用Python编写的CSV文件在每一行之间都有空行。import csvwith open('thefile.csv', 'rb') as f:data = list(csv.reader(f))import collectionscounter = collections.defaultdict(int)for row in data:counter[row[10]] += 1with open...

【转载】Nodejs异步流程控制Async_huang_sir_91的博客-程序员宅基地

前言:    最近在新公司接触到的项目用的版本比较的node。因此没有es6的一些特性,如promise/await等。网上查找到的一篇很好的介绍async的api的文章。在这里转载一下。方便以后查看http://blog.fens.me/nodejs-async/Nodejs异步流程控制Async从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架w...

随便推点

linux用什么命令查看ip,Linux中ip命令的使用实例_墨棏感卿的博客-程序员宅基地

导读在以前的Linux系统版本中,我们一直使用' ifconfig '命令查看ip地址等信息。但是“ifconfig”已经不再被维护,并在近几年的Linux版本中已经被弃用。ifconfig命令已被ip命令替换。ip命令有点类似于ifconfig命令,但它更强大,附加了更多的功能。ip命令可以执行一些网络相关的任务,是ifconfig不能操作的。查看网络接口信息要查看网络接口信息,例如IP地址,子..._1671465600

Android 2.3 Json解析出错_kkdgdfgdf的博客-程序员宅基地

项目解析json数据时发现报      10-12 02:36:35.964: W/System.err(323): org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject 错误。      查了半天都没有发现问题json格式正确。后来经同事提醒说UTF-8

信息系统规划方法-Zachman框架_gonewithwind818的博客-程序员宅基地_信息系统规划方法

Zachman框架分为5个层次,代表不同类型的项目涉众的看法和观点,同时明确了企业架构工作的流程和流程承担者。 第一行是企业的管理层,是企业的规划和管理人员的范畴,定义了组织的方向和目的,以及架构工作的边界,明确架构所支持的业务范围,规划系统在功能、性能和成本等方面的整体要求。 第二行是企业的业务层,是系统的拥有者范畴,用业务术语来定义组织的...

实例和对象_ladliu的博客-程序员宅基地

这两种的区别是什么?类-->对象-->实例 人类是类 某个人是对象 你是实例 实例本身也是对象。 表现出来是这样的 String 类 String str str是对象 String str = "abc"; "abc"是实例,也是对象. 这样也能解释instance of object这种说法 str的实例是"abc" 那可以理解为实例是对象拥有了数据就构成了实例,如果一个对象他没有

Android之条形码、二维码扫描框架(非原创)_weixin_30402343的博客-程序员宅基地

文章大纲一、条形码、二维码扫描框架介绍二、条形码、二维码的区别和组成结构介绍三、条形码、二维码扫描框架应用场景四、BGAQRCode-Android框架实战五、项目源码下载六、参考文章一、条形码、二维码扫描框架介绍Android二维码扫描是一种常见的功能开发,但是技术选型不当会造成初期开发难度大、后期维护成本高。常见的Android二维码扫码解决方案很多,比如ZXing,b...

React Native Application和Activity源码分析_Jesse-csdn的博客-程序员宅基地

基于V0.43.3版本 React Native Android端的ReactApplication和ReactActivity的实现原理.

推荐文章

热门文章

相关标签