私は数値の行列を読み込んでおり、各セルを操作して各セルでテストを実行しようとしています。数値が != 0 の場合はそれを使用したいので、0 の場合は現在 x と y をインクリメントしてゼロ以外の数値を見つけています。
最後に、最初に一番上の行を調べてから、それらがすべて 0 の場合は最初の列を見下ろします。これは、1 つだけ (行または列) を参照している限り、正常に機能します。
このエラーが表示されるのはなぜですか? セルの設定方法について間違った考えを持っているのでしょうか、それともコードが間違っていますか?
マトリックスは次のようになります。
0,2,4,1,6,0,0
2,0,0,0,5,0,0
4,0,0,0,0,5,0
1,0,0,0,1,1,0
6,5,0,1,0,5,5
0,0,5,1,5,0,0
0,0,0,0,5,0,0
これをやろうとすると:
y = y + 5
x = x + 5
node = Alist[x][y]
次のようなエラーが表示されます。
node = Alist[x][y]
IndexError: list index out of range
私がちょうど書くなら:
y = y + 5
node = Alist[x][y]
print node
それは完全に問題なく動作しますが、x と y の両方を導入すると、リスト インデックスが範囲外になるという問題が発生し始めます。私の考えでは、次のように読む必要があります。
node = Alist[5][5]
マトリックスに従う場合、これは0です
def create_matrix(file):
with open('network.txt') as f:
Alist = []
for line in f:
part = []
for x in line.split(','):
part.append(int(x))
Alist.append(part)
return Alist
#used to set the start node, used once
def start_node(Alist):
x=0
y=0
#point node to pos [0][0] of Alist
node = Alist[x][y]
#test if node == 0
while node == 0:
y = y + 5
x = x + 5
node = Alist[x][y]
#create a list to hold co-ordinates
if node != 0:
#return node for processing by check_neighbours
return node, x, y
#def current_node(Alist, x, y)
#test neighbours to see if they can be used
def check_neighbours(node, Alist, i, j):
#print out values of x and y
print "x = %d" %i
print "y = %d" % j
print "node in check_neighbours is " + str(node)
#running of code begins here
def main():
file = ("F:/media/KINGSTON/Networking/network.txt")
Alist = create_matrix(file)
node, x, y = start_node(Alist)
check_neighbours(node, Alist, x, y)
main()