[英]Reverseing a 1-D array - PYTHON
如何編寫給定數字數組A的Python函數返回具有A元素相反順序的數組B? 不使用python中的反向函數,而是使用for循環?
到目前為止,這是我所擁有的,然后在外殼程序中調用函數main(),它給了我一些錯誤,其中一個錯誤是未定義“ B”。
def ReverseArray(A):
n = len(A)
for i in range(0, n-1):
B[n-i-1] = A[i]
return (B)
def main():
A = [13, 21, 15, 38, 49] # Test case for ReverseArray function
B = ReverseArray(A)
print(B)
我哪里做錯了?
正如您所說,您的第一個問題是尚未定義B
顯而易見的答案是定義B
累積list
的起始值是多少? 大概有空list
,對吧? 所以:
def ReverseArray(A):
B = []
n = len(A)
for i in range(0, n-1):
B[n-i-1] = A[i]
return (B)
您將遇到的下一個問題是B[ni-1] = A[i]
的IndexError
。 那是因為您要就地修改B
的項目,所以它必須以n
項目開頭。 換句話說,您想要的東西與A
一樣多。 A
的副本怎么樣?
B = list(A)
或者,如果您了解列表理解,則可能會更好:
B = [None for _ in A]
最后,您的算法實際上是不正確的。 例如,給定A
, n
將為5
,因此range(0, n-1)
將為[0, 1, 2, 3]
。 這意味着您永遠不會將B[0]
設置為任何值。
您可能尚未意識到Python range
函數返回的范圍不包括 stop
參數。 您只需要range(0, n)
(或更簡單地說, range(n)
)。
您可以像這樣向后遍歷列表,然后將每個元素添加到列表B中。
def ReverseArray(A):
B = list()
for i in xrange(len(A)-1,-1,-1):
B.append(A[i])
return B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.