Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反向函数是否只接受一个参数(字符串)?_Python_Algorithm_Python 3.x - Fatal编程技术网

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