python slice数组在多个环境中产生不同的错误

时间:2014-05-02 07:00:32

标签: python list slice

我有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

第一个问题的任何想法?为什么我需要更改添加演员的代码?

1 个答案:

答案 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