1

私は Python を初めて使用し、多くの問題に直面しており、助けが必要です。0 と 1 を含むいくつかの単純な値を解析する必要がある Python 関数があります。

 111000111
 111000111
 101111111
 101100001
 111111111

位置を後で参照できるように、各 0 を 2D 配列に格納する必要があります。しかし、範囲外のインデックスを取得しています。何が間違っていて、どうすれば修正できますか?

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

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 に答える
1

私はあなたが何をしようとしているのか正確に 100% 確信しているわけではないので、ここで暗闇を突き刺しています.

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

これは問題があるようです。インデックスに追加していますが、このインデックスにどのように含まれているかわかりません。これが問題だと思います。おそらくただ

subset.append(rowList[rowCount]) 

あなたが何を達成するでしょう。

また、セミコロンは必要ありません= D

于 2012-08-22T00:58:33.393 に答える