Python 反向函数是否只接受一个参数(字符串)?
以下函数尝试反转字符串。 代码引发了一个异常Python 反向函数是否只接受一个参数(字符串)?,python,algorithm,python-3.x,Python,Algorithm,Python 3.x,以下函数尝试反转字符串。 代码引发了一个异常 “str”对象不支持项分配错误 代码 text ='' def reverse(text): r=text m=len(text)-1 for i in (r): r[m]=i m-=1 return sum(r) 异常原因 错误的原因是python中的字符串是不可变的 逻辑问题 该代码即使在可变列表类型上也无法工作。该代码有几个逻辑错误 详细解决方案 字符串在python中是不可变
“str”对象不支持项分配
错误
代码
text =''
def reverse(text):
r=text
m=len(text)-1
for i in (r):
r[m]=i
m-=1
return sum(r)
异常原因 错误的原因是python中的字符串是不可变的 逻辑问题 该代码即使在可变列表类型上也无法工作。该代码有几个逻辑错误 详细解决方案 字符串在python中是不可变的,不能使用
r[index]= value
上述代码无效
相反,你可以这样做
def reverse(text):
return text[::-1]
最佳解决方案
如果切片
或反向
更好,则值得争论。两者都不是一个公平的比较,因为反向
返回一个迭代器
这里是我的比较无论如何做使用
欢迎来到StackOverflow。你的问题不清楚。请在正文中,而不是在标题中清楚地、完整地陈述。如何逆转string@cool477检查anserNote,这对于可变序列也不能正常工作;你测试过吗?@jornsharpe你是对的。理想情况下,你应该使用“reversed”,因为它更可读,可能更快(未检查)。@Frogboxe reversed返回一个序列,而不是字符串。因此,它增加了更多的空间和复杂性,而且time@Frogboxe我已经更新了两种方法的比较answer@Frogboxe:使用
[::-1]
获取序列的倒数,不管你喜欢与否,这是常见的Python习惯用法reversed
只有在需要在不复制的情况下对其进行迭代时才具有优势,即使如此,它也只会更好地减少内存使用,大多数情况下,[::-1]
切片也会更快。
In [13]: %timeit "sarath"[::-1]
The slowest run took 14.82 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 257 ns per loop
In [14]: %timeit "".join(reversed("sarath"))
The slowest run took 9.02 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 1.32 µs per loop