قضية python مع تعيين الصفيف في وظيفة متكررة

أحاول كتابة دالة لعد انحرافات الصفيف ، باستخدام القسمة وقهر. أدناه هي وظيفة:

def count_inv_sort(array):
    if len(array)==1:
        result = (0,array)
    else:
        n1=int(math.floor(len(array)/2))
        n2=len(array)-n1
        #Divide
        array_1=array[:n1]
        array_2=array[-n2:] 

        #Conquer
        (inv1, sorted_array_1)=count_inv_sort(array_1)
        (inv2, sorted_array_2)=count_inv_sort(array_2)

        #Merge
        i=0
        j=0
        inv_count=0
        for k in range(len(array)):
            if (i != len(sorted_array_1)) & (j !=len(sorted_array_2)):
                if sorted_array_1[i]<=sorted_array_2[j]:
                    array[k]=sorted_array_1[i]
                    i=i+1
                    inv_count=inv_count+j
                else:
                    print('before assignment')
                    print(sorted_array_1)
                    array[k]=sorted_array_2[j]
                    print('after assignment')
                    print(sorted_array_1)

                    j=j+1
            elif i == len(sorted_array_1):
                array[k]=sorted_array_2[j]
                j=j+1
            else:               
                array[k]=sorted_array_1[i]
                i=i+1
                inv_count=inv_count+j
        result = (inv_count+inv1+inv2, array)
    return result

إذا قمت بإجراء تحليل في الدالة باستخدام إدخال قائمة ، فإنها تعمل كما هو متوقع. ولكن إذا قمت بإجراء تحليل في الدالة باستخدام إدخال صفيف متعرج ، فستعرض نتائج مختلفة. تكمن القضية في بند آخر ، حيث أضع الطباعة. يمكن للشخص أن يساعد على شرح السبب وراء ، لماذا لا يعمل وظيفة خارج عن مجموعة.

شكر!

0
مرحبا سيرج ، شكرا للنظر في هذه المسألة. اعتدت numpy.array
وأضاف المؤلف Xiaohong, مصدر
ماذا نسمي صفيف؟ هل array.array أو أي شيء آخر؟
وأضاف المؤلف Serge Ballesta, مصدر