array_2D

ソースコード

from titan_pylib.data_structures.array.array_2D import Array2D

view on github

展開済みコード

 1# from titan_pylib.data_structures.array.array_2D import Array2D
 2from typing import TypeVar, Generic
 3
 4T = TypeVar("T")
 5
 6
 7class Array2D(Generic[T]):
 8
 9    def __init__(self, n: int, m: int, val: T) -> None:
10        self.n: int = n
11        self.m: int = m
12        self.val: T = val
13        self.a: list[T] = [val for _ in range(n * m)]
14
15    def set(self, i: int, j: int, val: T) -> None:
16        assert (
17            0 <= i < self.n and 0 <= j < self.m
18        ), f"IndexError: {self.__class__.__name__}.set({i}, {j}, {val})"
19        self.a[i * self.m + j] = val
20
21    def get(self, i: int, j: int) -> T:
22        assert (
23            0 <= i < self.n and 0 <= j < self.m
24        ), f"IndexError: {self.__class__.__name__}.get({i}, {j})"
25        return self.a[i * self.m + j]
26
27    def tolist(self) -> list[list[T]]:
28        a = [[self.val] * self.m for _ in range(self.n)]
29        for i in range(self.n):
30            for j in range(self.m):
31                a[i][j] = self.get(i, j)
32        return a
33
34    def __str__(self) -> str:
35        return str(self.tolist())
36
37    __repr__ = __str__

仕様

class Array2D(n: int, m: int, val: T)[source]

Bases: Generic[T]

get(i: int, j: int) T[source]
set(i: int, j: int, val: T) None[source]
tolist() list[list[T]][source]