Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
当前回答
一个不那么令人困惑的方法是:
string = 'happy'
print(string)
“快乐”
string_reversed = string[-1::-1]
print(string_reversed)
'伊帕'
英语[-1::-1]如下:
“从-1开始,一直走,采取-1的步骤”
其他回答
def reverse(input):
return reduce(lambda x,y : y+x, input)
@保罗的s[::-1]是最快的;较慢的方法(可能更可读,但这是有争议的)是“”.join(颠倒)。
使用切片:
>>> 'hello world'[::-1]
'dlrow olleh'
切片符号采用[start:stop:step]的形式。在这种情况下,我们省略了开始和停止位置,因为我们需要整个字符串。我们还使用step=-1,意思是“从右到左重复一个字符”。
有多种方法可以在Python中反转字符串
切片方法
string = "python"
rev_string = string[::-1]
print(rev_string)
使用反向函数
string = "python"
rev= reversed(string)
rev_string = "".join(rev)
print(rev_string)
使用递归
string = "python"
def reverse(string):
if len(string)==0:
return string
else:
return reverse(string[1:])+string[0]
print(reverse(string))
使用for循环
string = "python"
rev_string =""
for s in string:
rev_string = s+ rev_string
print(rev_string)
使用while循环
string = "python"
rev_str =""
length = len(string)-1
while length >=0:
rev_str += string[length]
length -= 1
print(rev_str)
a=input()
print(a[::-1])
上述代码接收来自用户的输入,并通过添加[::-1]打印与输入相反的输出。
输出:
>>> Happy
>>> yppaH
但当涉及到句子的情况时,请查看下面的代码输出:
>>> Have a happy day
>>> yad yppah a evaH
但如果您只想反转字符串的字符,而不想反转字符串序列,请尝试以下操作:
a=input().split() #Splits the input on the basis of space (" ")
for b in a: #declares that var (b) is any value in the list (a)
print(b[::-1], end=" ") #End declares to print the character in its quotes (" ") without a new line.
在上面第2行的代码中,我说**变量b是列表(a)中的任何值**我说var a是一个列表,因为当你在输入中使用split时,输入的变量变成了一个列表。还要记住,在int(input())的情况下不能使用split
输出:
>>> Have a happy day
>>> evaH a yppah yad
如果我们不在上面的代码中添加end(“”),那么它将按如下方式打印:
>>> Have a happy day
>>> evaH
>>> a
>>> yppah
>>> yad
下面是一个了解end()的示例:
代码:
for i in range(1,6):
print(i) #Without end()
输出:
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
现在使用end()编写代码:
for i in range(1,6):
print(i, end=" || ")
输出:
>>> 1 || 2 || 3 || 4 || 5 ||