Python,列表索引在2D数组中超出范围

时间:2012-08-22 00:52:19

标签: python list

我是Python的新手,遇到了一大堆问题,我需要一些帮助。我有一个python函数需要解析一些带0和1的简单值。

 111000111
 111000111
 101111111
 101100001
 111111111

我需要使用2D数组存储每个0,以便稍后可以引用这些位置。但是我的索引超出了范围,我做错了什么以及如何解决它?

这是python代码:

def storeSubset(fileName):
locale = dataParser(fileName); test = [];
subset = []; subSetCount = 0; columnCt =0;
rowList = []; columnList=[];
for rowCount in range(0, len(locale)):
#   print " "; print " "
#   print "Values of one row locale[row]: ", locale[rowCount]; 
#   print "We are at row# 'row': ", rowCount;
#   print "Length of row is int(len(locale[rowCount]))", int(len(locale[rowCount]));
    test = locale[rowCount];

    for columnCount in range (0, int(len(locale[rowCount])-1)):
        rowVal = locale[rowCount][columnCount];
#       print "Value of column is :", rowVal;
        if (rowVal==0):
#           print "columnVal = 0, the column position is ", columnCount;
            subset[subSetCount].append(rowList[rowCount]);
            subset[subSetCount].append(rowList[columnCount]);
subSetCount+=1;
print "The Subsets is :", subset;
return subset;

3 个答案:

答案 0 :(得分:3)

当你有subset[subSetCount]时,子集仍然是一个空列表,因此索引超出范围。 rowList[rowCount]rowList[columnCount]也是如此。

从这里开始,我会推测一下你正在尝试做些什么来帮助你解决它。似乎可能代替

subset[subSetCount].append(rowList[rowCount]);
subset[subSetCount].append(rowList[columnCount]);

你只想要

rowList.append( rowCount )
columnList.append( columnCount )

然后,在for columnCount循环之后,也许你想要

subset.append( [rowList, columnList] )

或类似的东西。

答案 1 :(得分:1)

我并不是100%肯定你正在尝试做什么,所以我只是在黑暗中刺伤。

subset[subSetCount].append(rowList[rowCount]);
subset[subSetCount].append(rowList[columnCount]);

这似乎有问题。您已经附加到索引,但我不知道该索引中有什么内容。我假设这是问题所在。也许只是

subset.append(rowList[rowCount]) 

会完成你的目标。

另外,你不需要分号= D

答案 2 :(得分:1)

这是numpy有用的场合:

import numpy as np
with open(datafile) as f:
     lines = [list(l.strip()) for l in f]

array = np.array(lines)
zeros = array == 0
ones = array == 1