Python切片数组在不同环境中会产生不同的错误。

2024-09-29 21:53:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个开发环境

首先,我将数据加载到数组中:

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):]

但在第二个环境中,我必须将代码更改为以下内容,因为我得到的是“切片索引必须是整数或无或have\uu index\uuuu方法”:

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

你知道第一个的问题吗?为什么我需要更改代码来添加cast


Tags: 代码devenv环境windowslinefilenamearray
1条回答
网友
1楼 · 发布于 2024-09-29 21:53:54

默认情况下,python3中的除法给出浮点数。并且不能使用浮点数作为列表的索引

在这种情况下,您可能需要使用整数除法,如下所示

tempLeftArray  = array[:length // 2]
tempRightArray = array[length // 2:]

在Python2.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

相关问题 更多 >

    热门问题