-4

我想知道如何在不使用任何库模块甚至虚拟变量或扩展切片表示法的情况下反转字符串,例如s[::-1]

例如我有一个字符串 >>>['f','a','l','u','b']

输出应该是>>>['b','u','l','a','f']

我已经搜索了这两个链接,但他们没有提供这个解决方案

Python中的字符串反转

在 Python 中反转字符串

Python使用递归反转字符串

这些链接没有提供答案。我知道字符串是不可变的,这正是我在列表中使用字符串字符的原因,而且这里几乎每个人都使用内置函数(我已经知道)解决了它。仍然没有具体的答案

这个问题是在一次采访中问我的。而且我认为鼓励新来者而不是谴责和否决他们的问题更好

4

4 回答 4

3

正如@Chris 在评论中提到的,

seq = ['f','a','l','u','b'] # this is a list not a string

因此您可以轻松地就地反转列表

seq.reverse()
于 2012-08-03T13:34:01.283 回答
1
s = 'falub'
s = ''.join(reversed(s))

或者

list(reversed(s)) 

如果您想将其保留为列表。

于 2012-08-03T13:32:37.977 回答
1

您可以在没有切片符号的情况下使用它来反转,无需调用list()

s = "hello world"
s_reversed = ''.join(reversed(s))

// output
'dlrow olleh'
于 2012-08-03T13:33:34.200 回答
1

你可能会做一些疯狂的按位运算,但这不是我的强项。因为我不会考虑内置函数“库模块”,所以我认为你可以这样做:

my_str = "".join(reversed(my_str))

但你真的永远不想这样做。

ETA:实际上,经过研究,看起来这个问题的“疯狂按位”解决方案实际上要复杂得多,可能需要库模块。

于 2012-08-03T13:37:10.987 回答