【发布时间】: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