簡體   English   中英

反轉一維數組-PYTHON

[英]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]

最后,您的算法實際上是不正確的。 例如,給定An將為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM