TypeError: slice indices must be integers or None or have an __index__ method

TypeError:切片索引必须为整数或无,或具有__index__方法

def merge_sore(lists):
    if len(lists) <= 1:
        return lists
    num = len(lists) / 2
    left = merge_sore(lists[:num])
    right = merge_sore(lists[num:])
    return merge(left,right)

出错原因:除号使用/,改成//就好,

在Python2.x中,使用/,整数相除为整数,会把小数部分忽略,浮点数相除会保留小数部分

在Python3.x中,使用/,整数与浮点数相除都是浮点数

使用//,在Python2.x、Python3.x中都一样,取整除法,会忽略小数部分,向下取整

print(5/3)
print(5//3)

1.6666666666666667
1

def merge_sore(lists):
    if len(lists) <= 1:
        return lists
    num = len(lists) // 2
    left = merge_sore(lists[:num])
    right = merge_sore(lists[num:])
    return merge(left,right)
原文地址:https://www.cnblogs.com/gaona666/p/13456586.html