マトリックスのようにフォーマットされた.txtファイルをPythonグリッドに使用しようとしています。
グリッドを作成するために使用しているクラスは次のとおりです。
class Grid(object):
"""Represents a two-dimensional array."""
def __init__(self, rows, columns, fillValue = None):
self._data = Array(rows)
for row in xrange(rows):
self._data[row] = Array(columns, fillValue)
def getHeight(self):
"""Returns the number of rows."""
return len(self._data)
def getWidth(self):
"Returns the number of columns."""
return len(self._data[0])
def __getitem__(self, index):
"""Supports two-dimensional indexing with [][]."""
return self._data[index]
def __str__(self):
"""Returns a string representation of the grid."""
result = ""
for row in xrange(self.getHeight()):
for col in xrange(self.getWidth()):
result += str(self._data[row][col]) + " "
result += "\n"
return result
Array と呼ばれる別のクラスを使用して、1D 配列を構築し、それを 2D 配列にします。コード:Grid(10, 10, 1)
は、グリッド内のすべての数値が 1 である 10 行 10 列の 2D 配列を返します。
ここに配列クラスがあります
class Array(object):
"""Represents an array."""
def __init__(self, capacity, fillValue = None):
"""Capacity is the static size of the array.
fillValue is placed at each position."""
self._items = list()
for count in xrange(capacity):
self._items.append(fillValue)
def __len__(self):
"""-> The capacity of the array."""
return len(self._items)
def __str__(self):
"""-> The string representation of the array."""
return str(self._items)
def __iter__(self):
"""Supports traversal with a for loop."""
return iter(self._items)
def __getitem__(self, index):
"""Subscript operator for access at index."""
return self._items[index]
def __setitem__(self, index, newItem):
"""Subscript operator for replacement at index."""
self._items[index] = newItem
1 を、次のようなテキスト ファイルの値にしたい:
9 9
1 3 2 4 5 2 1 0 1
0 7 3 4 2 1 1 1 1
-2 2 4 4 3 -2 2 2 1
3 3 3 3 1 1 0 0 0
4 2 -3 4 2 2 1 0 0
5 -2 0 0 1 0 3 0 1
6 -2 2 1 2 1 0 0 1
7 9 2 2 -2 1 0 3 2
8 -3 2 1 1 1 1 1 -2
9,9 は、行列の行と列を表します。リストを使用できる唯一の場所はreadline().split()
、最初の行をリストに変換するメソッドです。
もちろん、セリフはあります。
m = open("matrix.txt", "r")
data = m.read
ここで、データはフォルダーからフォーマットされた文字列表現で数値を返しますが、各数値を個別に返し、それをグリッド内のセルに設定する方法が必要です。何か案は?
編集:私の現在のコード:
g = map(int, m.readline().split())
data = m.read()
matrix = Grid(g[0], g[1], 1)
g[0] と g[1] は、行と列の変数を持つリストからのものです。このように、同じ形式に従うすべての .txt ファイルは、最初の行が行と列の変数になります。リストを使用せずに、残りのデータで「1」を置き換える方法を見つけようとしています。