<p>你需要划分长度,而不是列表:</p>
<pre><code>halfsize = size // 2
</code></pre>
<p>它使用floor division(<code>//</code>)操作符来确保结果是整数。你知道吗</p>
<p>下一个问题是,您在多个位置引用了<code>arrayOne</code>,但将参数命名为<code>array</code>;修复这些引用,您的函数就可以工作了:</p>
<pre><code>>>> 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]
</code></pre>
<p>您的函数可以稍微简化;您不需要<code>temp</code>变量,因为Python允许您就地交换值:</p>
<pre><code>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
</code></pre>
<p>另请注意,您正在原地反转列表;这里不需要返回结果列表对象:</p>
<pre><code>>>> a = [4, 6, 42, 1, -5]
>>> reverse(a)
[-5, 1, 42, 6, 4]
>>> a
[-5, 1, 42, 6, 4]
</code></pre>