首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归地反转列表,我不理解输出

问递归地反转列表,我不理解输出
EN

Stack Overflow用户
提问于 2022-06-22 14:21:20
回答 1查看 47关注 0票数 -1

​

​

嗨,我有点不明白为什么ans的输出是'hello‘,当我试图使用这个递归方法反转列表时。根据调试器,ans在函数中是正确的,但在退出rs函数时会突然改变。

​

​

​

EN

回答 1

Stack Overflow用户

发布于 2022-06-22 14:31:01

几点意见:

  • reverseString()应该有返回类型的None,所以不需要行
  • ,ans的逻辑看起来很好,但是根据注释“不要返回任何东西,修改s就地”,您需要修改s;您可以使用(有点神秘的)语句ans
  • speaking s[:] = ans来实现这一点,该语句(由于:字符)将s的内容替换为: of :语法的内容,这并不重要,但您可以使用s[1:] (仅一个:)而不是s[1::]

。

更新后的代码(我已将List指定为list,以保留reverseString()的def语句):

代码语言:javascript
复制
List = list
class Solution:
    def reverseString(self, s: List[str]) -> None:
        ans=[]
        def rs(s, ans):
            if len(s) == 0:
                return
            a = s[0]
            rs(s[1:], ans)
            ans.append(a)
        rs(s, ans)
        s[:] = ans


x = Solution()
s = [c for c in 'hello']
print('input:', s, sep='\n')
x.reverseString(s)
print('output:', s, sep='\n')

输出:

代码语言:javascript
复制
input:
['h', 'e', 'l', 'l', 'o']
output:
['o', 'l', 'l', 'e', 'h']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72717281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档