Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
当前回答
有多种方法可以在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)
其他回答
original = "string"
rev_index = original[::-1]
rev_func = list(reversed(list(original))) #nsfw
print(original)
print(rev_index)
print(''.join(rev_func))
@保罗的s[::-1]是最快的;较慢的方法(可能更可读,但这是有争议的)是“”.join(颠倒)。
一个不那么令人困惑的方法是:
string = 'happy'
print(string)
“快乐”
string_reversed = string[-1::-1]
print(string_reversed)
'伊帕'
英语[-1::-1]如下:
“从-1开始,一直走,采取-1的步骤”
这也是一种有趣的方式:
def reverse_words_1(s):
rev = ''
for i in range(len(s)):
j = ~i # equivalent to j = -(i + 1)
rev += s[j]
return rev
或类似:
def reverse_words_2(s):
rev = ''
for i in reversed(range(len(s)):
rev += s[i]
return rev
另一种更“奇特”的方式使用支持.reverse()的字节数组
b = bytearray('Reverse this!', 'UTF-8')
b.reverse()
b.decode('UTF-8')`
将产生:
'!siht esreveR'
下面是如何使用for循环反转字符串:
string = "hello,world"
for i in range(-1,-len(string)-1,-1):
print (string[i], end=(" "))