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)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM