我是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;
答案 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