如果语句和Python中的2D数组

时间:2018-04-09 20:39:24

标签: python list

我有一张关于excel的表格,我想检查一些元素是否为空,用于错误分类或者是否有问题。

所以,我想检查放在[1]的所有元素。

import csv
matrix = csv.reader(open("matrix1.csv","rb"))

arr = range(50)

x = 0
for row in matrix:
    arr[x] = row
    x += 1

i = 0
len = len(arr)
for i in range(len):
    if ((arr[i][1]) is None):
        print("it is empty")
  

TypeError:'int'对象不可订阅

但是,如果我的代码类似于下面的代码,它可以正常工作,但我的控制台仍然说:

  

TypeError:'int'对象不可订阅

for i in range(len):
    if ((arr[i]) != 0):
        print(arr[i][1])

完整控制台输出:

  

585957   Traceback(最近一次调用最后一次):   545253   515359   575951     文件“C:/PycharmProjects/test.py”,第17行,in   525356       打印(ARR [I] [1])   565958   585754   TypeError:'int'对象不可订阅   505152   535250

这意味着,它给了我想要的元素,但它仍然不酷。

我错过了什么?谢谢!

2 个答案:

答案 0 :(得分:2)

arr是一个单维数组,或只是一个列表,其中包含从049的数字。 arr[i][1]正试图访问1 i+1 arr列表中的第二项(i+1),该项目不存在,因为arri的数字是一个数字,而不是一个列表(它是数字<WAS_INSTALL_DIR>/bin/> wsadmin -conntype NONE wsadmin> securityoff wsadmin> exit )。

答案 1 :(得分:2)

您似乎正在尝试使用arr = range(50)实例化固定长度列表。对于大多数Python应用程序,您不需要关心这一点;列表可以动态增长,内存将根据需要进行分配。相反,只需创建一个空列表并附加到它。

arr = []

for row in matrix:
    arr.append(row)

我认为您的错误来自于您可能没有用矩阵的行替换range(50)中的所有元素,留下整数值。这些会导致您看到的错误(49[1]无效,因为您尝试索引整数)。