【问题标题】:Recursively swapping list of integers递归交换整数列表
【发布时间】:2019-12-18 14:34:35
【问题描述】:

以下代码适用于这样的调用:

print((swap_elements('dog'))

但不是:

print((swap_elements[1,2,3,4]))

应该打印:

[2,1,4,3]

我得到的错误是一个类型错误:TypeError: unsupported operand type(s) for +: 'int' and 'list'。这是有道理的,我只是对 Python 了解不够,不知道如何处理这样的不同类型。请注意,它必须是递归的,除了 len、str、append、int 之外,我不能使用内置函数。

任何想法/解释都会非常有帮助!谢谢。

def swap_elements(elements):

   if len(elements) >= 2:
        return elements[1] + elements[0] + 
        swap_elements(elements[2:])

   return elements

【问题讨论】:

  • 问题不在于列表中有整数,而在于您有一个列表而不是字符串。对于字符串,elements[0] 给你一个字符串,因为 Python 没有单独的类型来表示单个字母。但是对于列表,elements[0] 会为您提供列表中包含的其中一项内容 - 不是 包含该内容的单项列表。

标签: python python-3.x list recursion integer


【解决方案1】:

你只能用列表做列表连接,所以改变

elements[1] + elements[0] + swap_elements(elements[2:])

[elements[1]] + [elements[0]] + swap_elements(elements[2:])

【讨论】:

  • 哦,有趣,有道理!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2019-12-04
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多