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)
这里有一个不花哨的:
def reverse(text):
r_text = ''
index = len(text) - 1
while index >= 0:
r_text += text[index] #string canbe concatenated
index -= 1
return r_text
print reverse("hello, world!")
这也是一种有趣的方式:
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'
1.使用切片表示法
def rev_string(s):
return s[::-1]
2.使用reversed()函数
def rev_string(s):
return ''.join(reversed(s))
3.使用递归
def rev_string(s):
if len(s) == 1:
return s
return s[-1] + rev_string(s[:-1])
下面是如何使用for循环反转字符串:
string = "hello,world"
for i in range(-1,-len(string)-1,-1):
print (string[i], end=(" "))