Python: list indices must be integers or slices, not float問題


今天嘗試使用PyCharm來編寫一個Python程序,結果報錯

TypeError: list indices must be integers or slices, not float

出錯代碼

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) / 2] #報錯 line4
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)


print (quicksort([3, 6, 8, 10, 12, 13, 1, 2]))

這是一個簡易的快排程序
經過查閱得到 “/”是浮點數除法,但是在此程序中需要整除,所以要用“%”或者“//”

所以經過更改后的Python代碼

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) % 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)


print (quicksort([3, 6, 8, 10, 12, 13, 1, 2]))

結果

[1, 2, 3, 6, 8, 10, 12, 13]

Process finished with exit code 0

成功輸出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM