我有2个开发环境。
首先我将数据加载到数组中:
def loadData(filename):
ins = open(filename, "r")
array = []
for line in ins:
array.append(int(line))
ins.close()
return array
在第一个中,这没有问题
tempLeftArray = array[:(length / 2)]
tempRightArray = array[(length / 2):]
但是在第二个环境中,我必须将代码更改为以下内容,因为我得到的切片索引必须是整数或无,或者具有__index__方法':
tempLeftArray = array[:int(length / 2)]
tempRightArray = array[int(length / 2):]
Dev env I:Windows 8.1,visual studio 2013,python 3.4.0
Dev env II(错误一):windows 7,visual studio 2013,python 3.4.0
第一个问题的任何想法?为什么我需要更改添加演员的代码?
答案 0 :(得分:3)
默认情况下,Python 3中的除法为您提供浮点数。并且您不能将浮点数用作列表的索引。
在这种情况下,你可能想要使用整数除法,比如
tempLeftArray = array[:length // 2]
tempRightArray = array[length // 2:]
在Python 2.x中,
print(4 / 2)
# 2
print(4.0 / 2)
# 2.0
print(4.0 // 2)
# 2.0
print(4 // 2)
# 2
在Python 3.4中,
print(4 / 2)
# 2.0
print(4.0 / 2)
# 2.0
print(4.0 // 2)
# 2.0
print(4 // 2)
# 2