Python字符串逆序输出教程:代码优化与技巧解析

创始人
2025-01-11 07:18:49
0 次浏览
0 评论

Python字符串逆序输出求大神看一下哪里不对

代码应该改为(个人评论,操作可能成功):stra=input()order=[]foriinstra:ifi=='':order.reverse()forsinorder:print(s,end='')order=[]print('',end='')else:序列。
附录(i)顺序。
反转()顺序:print(s,end='')

编写一个Python程序,提示用户输入一个字符串,程序以逆序显示该字符串

这是一个Python3程序,用于对您选择的字符串进行逆向工程

s=input("请输入字符串:")print()s[::-1])#s[::-1]等于s[-1:-len(s)-1:-1],即从最后一个元素翻转到第一个元素,即倒序

是。

python实现字符串列表排序?

您可以使用Python内置的sorted()函数对字符串列表进行排序,并使用len()函数作为sort关键字按字符串长度排序。
例如,对于列表a=['b','a','c','ab','aa','aaa'],可以使用以下代码进行排序:pythonsorted_a=sorted(a,key=len)这将返回一个新的排序列表,其中字符串按长度递增的顺序排列。
对于相同长度的字符串,它们将按照它们在原始列表中出现的顺序进行排序。
如果需要逆序排序,可以将参数reverse=True传递给sorted()函数:pythonsorted_a=sorted(a,key=len,reverse=True)这将返回一个新的排序列表,其中字符串按长度排序按顺序排序减少。

Python中的反转字符串:reversed()、切片等

当你在代码中频繁使用Python字符串时,您可能想以相反的顺序使用它们。
Python包含一些有用的工具和技术,可以在这些情况下为您提供帮助。
使用它们可以让您快速有效地构建现有字符串的反向副本。

了解这些用于在Python中反转字符串的工具和技术将提高您作为Python开发人员的技能。

在本课中,您将学习如何:

快速构造横切反向字符串

使用现有字符串的反向副本并使用反向字符串().join()

重复并递归以手动反转。
包含字符串

执行字符串的反转

使用sorted()对字符串进行反向排序

要充分利用本教程,您应该了解电缆的基础知识;for和while循环和递归。

使用核心Python工具反转字符串

在某些情况下;Python字符串可能需要反向处理。
例如,假设您有一个字符串,您可以使用哪些Python工具来帮助您找到将其转换回来的快速方法?"ABCDEF""FEDCBA"

Python中的字符串是不可变的;因此,不可能反转给定的字符串。
为了满足要求,您使用目标字符串您需要创建反向副本。

Python提供了两种直接的方法来反转字符串。
由于字符串是序列,它们是可转位的;可以切割的还有更多可用的。
这些函数允许您使用切片直接以相反顺序生成给定字符串的副本。
第二种选择是使用内置函数reverse()创建一个迭代器,以与输入字符串相反的顺序输出输入字符串的字符。

通过切片字符串进行反转

切片是一种有用的技术,它允许您使用称为偏移量的整数索引组合从给定数组中提取项目。
当谈到切割字符串时,这些偏移量是切片中第一个字符的索引;指定要剪切的字符的索引以及指定每次迭代要跳过的字符数的值。

换行;您可以使用以下语法:

a_string[start:stop:step]

开始偏移;停下脚步。
此表达式提取从starttostop?1by的所有字符。
稍后您将详细了解这一切的含义。

所有偏移量都是可选的;它们具有以下默认值:

这里,start是切片的索引;第一个字符停止切片操作还存储停靠点的索引。
第三个偏移步骤允许您确定每次迭代中要跳过的切片数。

注意:当达到等于或大于的索引时,切片操作停止。
这意味着它不会向最后一个切片的索引添加任何内容(如果有的话)。

级别偏移允许您调整所需字母的偏移方式,同时跳过其他字符:

>>

>>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>字母[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>letters[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>letters[1::2]'abcd'

这里,你之前没有提供过。
具有精确偏移值的子字符串,用于获取原始字符串的精确副本。
省略第二个冒号(:)的斜杠也可用于此目的。
相当于步骤2,从目标行上的每个其他字符获取切片。
您可以使用不同的偏移量来更好地了解切片器的工作原理。

为什么第三个偏移量与Python中的字符串反转和切片有关?答案就在于如何一步步处理负值。
如果你给步长一个负值。
切片从右向左向后运行。

例如,如果指定stepequal-1;您可以构建一个以相反顺序恢复所有字母的磁盘:

>>

>>>字母=“ABCDEF">>>字母[::-1]'FEDCBA'>>>字母'ABCDEF'

thisslice.返回从字符串右端0到字符串左端(索引len(characters)-1)的所有字符。
当你使用这个技巧时,您可以按相反的顺序获得原始字符串的副本,而不会影响字母的原始内容。

创建现有字符串的反向副本的另一种方法是使用slice(),该嵌入函数的签名如下:

slice(start,stop,step)

该函数接受三个参数,与切片操作类似。
运算符中的偏移量是同义的,

返回一个代表调用distance(start,stop,step)的切片对象。

您可以使用slice()来复制切片。
[::-1]并快速反转字符串。
继续运行slice()到方括号内的以下调用:

>>

>>>letters="ABCDEF">>>letters[slice(None,None,-1))]'FEDCBA'

将None作为前两个参数传递给slice()告诉函数您想要依赖其内部默认行为,开始值和停止值与标准切片相同。
换句话说,“无开始和停止”意味着您需要从基础序列的左端到右端的一段。

.join()和反转字符串

reversed()第二个;以及最Pythonic的论点,反转字符串的方法是使用str.join()。
revered(),你会得到一个输出相反序列的迭代器:有时您可能需要手动更改字符串。

在本节中,您将学习如何使用精确循环和递归来反转字符串。
后一种技术在Pythonreduce()函数的帮助下使用函数式编程方法。

在循环中反转字符串

用于反转字符串的第一种技术涉及for循环和关联运算符(+)。
使用两个字符串作为操作数;该运算符返回与原始字符串连接的新字符串。
整个操作称为串联。

注意:使用.join()是在Python中连接字符串的推荐方法。
它很干净,效率和Pythonic。

这是一个函数,它接受一个字符串并使用串联在链中反转它:

>>

>>>defreversed_string(text):..result=""...forcharintext:...结果=char+结果...返回结果...>>>reversed_string("Hello,World!")'!dlroW,olleH'

在每次迭代时;Loop是后缀char;fromtext并将其与当前结果的内容相结合。
请注意,结果最初存储为空字符串("")。
然后重置一个新的中间字符串作为结果。
在循环结束时,结果将新字符串存储为原始字符串的反向副本。

注意:由于Python字符串是不可变的数据类型,本节中的示例表明使用了浪费的技术首先检查基础知识。
如果输入字符串仅包含一个字符;该字符串将返回给调用者。

最终声明;在重复的情况下,调用reversed_string()本身。
该调用采用输入字符串text[1:]的片段作为参数。
该光盘包含除第一个字母之外的所有字母。
下一步是将递归调用的结果附加到包含文本第一个字符的字符串。

在上面的例子中需要注意的重要一点是,如果将长字符串作为参数传递给reversed_string();你会得到一个RecursionError:

>>

>>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>letters[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>字母[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>字母[1::2]'abcd'0

达到Python的默认递归限制是您在代码中应该考虑的一个重要问题。
然而,如果需要使用回滚。
您仍然可以选择自行设置提款限额。

您可以通过从sys.getrecursionlimit()调用getrecursionlimit()来检查当前Python解释器的递归限制。
通常,该值通常为1000。
您可以使用与sys.recursionlimit()相同模块中的setrecursionlimit()来配置Python环境,使递归解决方案能够正常工作。
快来尝试一下吧!

使用reduce()反转字符串。
Pythonreduce()作为参数折叠或减少并迭代是一个对象。
然后,它将填充函数应用于输入叠加中的项目并返回单个值。

以下是如何使用reduce()反转字符串:

>>

>>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>letters[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>letters[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>letters[1::2]'abcd'1

在此示例中,lambda函数采用两个字符串。
以相反的顺序组合它们。
使用lambdatotext构造原始字符串的反向副本,它在循环内调用reduce()。

反向交叉字符串

有时您可能想以相反的顺序重复现有字符串;一种通常称为反向翻译的技术。
根据您的具体需求,您可以使用以下选项之一来反转字符串。
反转:

Reverse()函数与

Slice运算符;[::-1]

反向迭代可能是其中最常见的。
随着工具的使用,您将在以下部分中学习如何重复使用它们。

revered()内置函数

以相反顺序呈现字符串的最简单、最Pythonic的方法是与.join()结合使用reverse()。
当您创建和使用反转字符串时,您已经了解了该函数。

但是,revered()的主要目的和用例是支持Python可同步对象的反转。
接受一个字符串作为参数;revered()返回一个迭代器,该迭代器以相反的顺序输出输入字符串中的字符。

以下是如何以相反的顺序反转()字符串:

>>

>>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>letters[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>letters[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>letters[1::2]'abcd'2

例如该循环非常可读。
revered()的名称清楚地表明了其目的,并表明该函数对输入数据没有任何副作用。
因为reverse()返回一个迭代器;循环在内存使用方面非常高效。

切片运算符,[::-1]

对字符串执行反向迭代的第二种方法是使用您之前在a_string[::-1]示例中看到的扩展方案。
虽然这种方法对内存性能和可读性没有帮助。
它仍然提供了一种快速重新加载现有字符串的反向副本的方法:

>>

>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>letters[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>字母[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>字母[1::2]'abcd'3

这里这个例子,您可以使用截断运算符问候语来创建其反向副本。
然后,您可以使用该新的反向线程来填充循环。
在这种情况下,您处于新的反向线上反复因此,此解决方案的内存效率低于使用returned()。

创建自定义可逆字符串

如果您曾经尝试过反转Python列表;您应该知道列表有一个名为in-place.reverse()的便捷方法来反转底层列表。
由于Python中的字符串是不可变的,他们不提供类似的方法。

但是,您仍然可以使用.reverse()来模拟list.reverse():

>>

>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>letters[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>letters[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>letters[1::2]'abcd'4

ReversibleString继承自UserString。
集合模块中的类。
UserString是str内置数据类型的包装器。
它是专门为str.UserString创建的,当您需要创建能够添加自定义字符串类的自定义字符串时,它会派上用场。
UserString提供与常规字符串相同的功能。
它还添加了一个称为.dataholder的公共属性,并提供对包装字符串对象的访问。

在ReversibleString内部创建.reverse()。
该方法反转包装后的字符串.data并将结果设置回.data;外部.reverse()调用的作用与反转字符串相同。
然而,它实际上所做的是包含原始数据以相反的顺序创建新线程。

以下是ReversibleString在实践中的工作原理:

>>

>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>>letters[::]'AaBbCcDd'>>>来自其他字符的字母[:]'AaBbCcDd'>>>>#getend>>>letters[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>letters[1::2]'abcd'5

当你调用.reverse()on时使用时的文字该方法的行为就像对基础字符串进行就地更改一样。
然而,您实际上是在创建一个新字符串并将其分配回捆绑字符串。
请注意,文本现在以原始字符串的相反顺序存储。

因为UserString提供了与其超类str相同的功能。
您可以使用reverse()在框内进行反向迭代:

>>

>>>letters="AaBbCcDd">>>#Getallcharactersrelyingondefaultoffsets>>>letters[::]'AaBbCcDd'>>>字母[:]'AaBbCcDd'>>>#Geteveryothercharacterfrom0totheend>>>字母[::2]'ABCD'>>>#Geteveryothercharacterfrom1totheend>>>字母[1::2]'abcd'6

这里,您可以使用文本作为参数调用reverse()来传递for循环。
此调用按预期工作,因为UserString是从str更新的。
请注意,该调用不会影响原始线程。

以逆序对Python字符串进行排序

您要学习的最后一件事是以逆序对字符串的字符进行排序。
当您不想按特定顺序处理字符串,但需要按字母顺序反转它们时,这很方便。

为了解决这个问题,您使用sorted()这个内置函数返回一个包含输入可迭代对象的列表。

热门文章
1
Python中的format()方法:字... formatformat在python中的含义2222.22E+00Format...

2
Python编程入门:全面解析Pytho... python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...

3
Python字符串大小写转换方法全解析 python中字母的大小写转换怎么实现?在Python中,大小写转换由内置函数处...

4
Python字典:轻松获取最小值键与计算... python在一个字典里,返回值最小元素对应的键,救解在Python字典中,如果...

5
Python字符串去重空格:strip(... Python去除字符串中空格(删除指定字符)的3种方法在Python编程中,处理...

6
Python数组元素数量计算技巧分享 Python输出数组有多少个元素?简介:在本文中,首席CTO笔记将向您介绍Pyt...

7
简述python中pass的作用 pass语句的作用在许多编程语言中,包括Python;PASS语句用于在代码块中...

8
Python def 关键字详解:函数定... def是什么意思编程?戴夫是什么意思?def是Python中的函数定义关键字,用...

9
python不区分大小写的方法 Python字符串不区分大小写在Python中,字符串操作默认区分大小写。但有时...

10
Python字典操作全解析:添加、修改、... Pythondict字典基本操作(包括添加、修改、删除键...