1

我是 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;
4

3 回答 3

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

或类似的东西。

于 2012-08-22T00:57:42.097 回答
1

我不能 100% 确定你想要做什么,所以我只是在这里暗中刺伤。

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

这似乎有问题。您正在附加到一个索引,但我看不到该索引中的任何内容。我假设这是问题所在。也许只是

subset.append(rowList[rowCount]) 

会完成你什么。

此外,您不需要分号 =D

于 2012-08-22T00:58:33.393 回答
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
于 2012-08-22T01:02:45.963 回答