Skip to content

2023 06 26

転倒数

数列\(A=(A_1, A_2,...,A_n)\)において\(i<j\)かつ\(A_i > A_j\)となる組み合わせの数。
バブルソートの交換回数と等しい。 (1, 2, 3, 4, 5)の転倒数は0
(5, 1, 2, 3, 4)の転倒数は4

A = [5, 1, 2, 3, 4]
inversion = 0
for i in range(len(A)):
    for j in range(i + 1, len(A)):
        if A[i] > A[j]:
            inversion += 1

print(inversion) # 4

【Python】__class__

インスタンスが属しているクラスを表す。これをもとに新たにインスタンスを作成することもできる。

class TestClass():
    def __init__(self, name: str) -> None:
        self._name = name

    def __str__(self) -> str:
        return self._name


t = TestClass("test1")
print(t, t.__class__)

t2 = t.__class__("test2")
print(t2, t2.__class__)
test1 <class '__main__.TestClass'>
test2 <class '__main__.TestClass'>

【Python】__dict__

オブジェクトの(書き込み可能な)属性を保持する辞書またはその他のオブジェクトマッピング。

class TestClass():
    def __init__(self, name: str) -> None:
        self._name = name
        self._test = "aaaa"

    def test_method(self):
        ...

    def __str__(self) -> str:
        return self._name


t = TestClass("test1")
print(t, t.__dict__) # test1 {'_name': 'test1', '_test': 'aaaa'}