请帮我修复此代码。这是一个反转整数数组的函数,例如:[1,2,3,4,5] - > [5,4,3,2,1]。错误是:
builtins.TypeError: unsupported operand type(s) for /: 'list' and 'int'
请给我一个解决方案。谢谢
def reverse(array):
'''
[1,2,3,4,5] -> [5,4,3,2,1]
This method returns a reversed integer array.
'''
size = len(array)
halfsize = array/2
size -= 1
r = array[size]
temp = None
for s in range(0, halfsize):
temp = arrayOne[s]
array[s] = r
array[size] = temp
size -= 1
r=arrayOne[size]
return arrayOne
a = reverse ([1, 4, 3, 4, 5])
答案 0 :(得分:2)
您需要划分长度,而不是列表:
halfsize = size // 2
这使用分区(//
)运算符来确保结果是整数。
您的下一个问题是您在多个地方引用arrayOne
,但仅将您的参数命名为array
;修复这些引用并且您的函数有效:
>>> def reverse(array):
... '''
... [1,2,3,4,5] -> [5,4,3,2,1]
... This method returns a reversed integer array.
... '''
... size = len(array)
... halfsize = size // 2
... size -= 1
... r = array[size]
... temp = None
... for s in range(0, halfsize):
... temp = array[s]
... array[s] = r
... array[size] = temp
... size -= 1
... r=array[size]
... return array
...
>>> a = reverse ([1, 4, 3, 4, 5])
>>> a
[5, 4, 3, 4, 1]
你的功能可以简化一些;您不需要temp
变量,因为Python允许您就地交换值:
def reverse(array):
'''[1,2,3,4,5] -> [5,4,3,2,1]
This method returns a reversed integer array.
'''
size = len(array)
halfsize = size // 2
size -= 1
for s in range(halfsize):
array[s], array[size] = array[size], array[s]
size -= 1
return array
另请注意,您正在将列表撤消;没有必要在这里返回结果列表对象:
>>> a = [4, 6, 42, 1, -5]
>>> reverse(a)
[-5, 1, 42, 6, 4]
>>> a
[-5, 1, 42, 6, 4]
答案 1 :(得分:1)
有一种更简单的方法。
def reverseArray(array):
queue = []
for element in array:
queue.insert(0, element)
return queue
例如,如果您输入[2,3,4,5],它将返回[5,4,3,2]。
它使用queue 数据结构(使用insert来排队数据)以便反转它,然后读取队列的数据。正在使用Insert在数组的开头插入数据。
答案 2 :(得分:0)
你得到一个例外,因为数组是一个列表。在这一行:
halfsize = array/2
您将列表除以int。你应该使用
halfsize = size/2
相反。但是,由于我不知道arrayOne来自哪里,我无法确切地说出问题所在。
但是,我会在这里发布一个替代解决方案,它使用递归:)
def reverse(array, answer=None):
if len(array) == 0:
return answer
if not answer:
answer = []
answer.append(array.pop())
return reverse(array, answer)
递归是你的朋友:) 尝试使用它。
而且,如果您不是出于学习目的而使用,请使用列表的反向内置函数
>>>> a = [1,2,3,4,5]
>>>> a = a.reverse()
而且,作为一个伟大的结局,一个pythonic方式来做到这一点:
>>>> a = [1,2,3,4]
>>>> a[::-1]
[4,3,2,1]