thiagowfx's avatar

Β¬ just serendipity πŸ€ (not just serendipity)

array

β€’ 561 words β€’ 3 min β€’ updated

python
from copy import copy, deepcopy

if __name__ == "__main__":
    assert [] == []

    a = []
    if a:
        assert False

    assert [1] + [2] == [1, 2]

    assert [1] < [1, 2]

    assert [1, 2] == [1, 2]
    assert [1, 2] != (1, 2)

    a = [1]
    a.append(2)
    assert a == [1, 2]
    a.extend([3])
    assert a == [1, 2, 3]
    assert a.pop() == 3
    assert a == [1, 2]

    assert len(a) == 2

    assert 1 in a
    assert 2 in a
    assert 3 not in a

    assert [0] + [1, 2] == [0, 1, 2]

    ans = []
    for el in a:
        ans.append(el)
    assert ans == [1,2]

    [i for i in range(3)] == [0, 1, 2]
    (i for i in range(3)) == (0, 1, 2)
    (i for i in range(3)) == tuple([0, 1, 2])

    # filter
    [i for i in range(4) if i & 1] == [1, 3]
    [i for i in range(4) if i % 2] == [1, 3]
    [i for i in range(4) if i & 0] == [0, 2]
    [i for i in range(4) if not i % 2] == [0, 2]

    # map
    [2 * i for i in range(1, 3)] == [2, 4]

    # map function
    list(map(lambda i: i *  2, range(1, 3))) == [2, 4]

    # filter function
    list(filter(lambda i: i % 1, range(4))) == [1, 3]

    range(3) == list(reversed(list(reversed(range(3)))))
    range(3) == range(3)[::-1][::-1]

    assert list(range(2)) == [0, 1]
    assert list(range(3)) == [0, 1, 2]
    assert list(range(3))[:1] == [0]
    assert list(range(3)[:1]) == [0]
    assert list(range(3))[1:] == [1, 2]
    assert list(range(3))[1:2] == [1]

    assert range(0, 10, 2) == range(10)[::2]
    assert range(1, 10, 2) == range(10)[1::2]
    assert range(1, 7, 2) == range(10)[1:7:2]

    assert [1, 2][-1] == 2
    assert [1, 2][-2] == 1

    q =  [1,2]
    q.append(3)

    assert list(range(-1)) == []
    assert range(-1) == range(-2) == range(0) == range(1, 1)

    [0, 1, 2][::-1] == [2, 1, 0]

    assert list(range(3, -1, -1)) == [3, 2, 1, 0]
    assert list(range(2, -1, -1)) == [2, 1, 0]
    assert list(range(3, 0, -1)) == [3, 2, 1]
    assert list(range(3, -1, -2)) == [3, 1]

    assert list(enumerate(range(3))) == [(0, 0), (1, 1), (2, 2)]
    assert list(enumerate(range(2, -1, -1))) == [(0, 2), (1, 1), (2, 0)]

    q = [1, 2]
    del q[0]
    assert q == [2]

    q.remove(2)
    assert q == []

    q = [1]
    try:
        del q[1]
        assert False
    except Exception:
        ...

    try:
        q.remove(2)
        assert False
    except Exception:
        ...

    if 2 in q:
        q.remove(2)

    assert str([1, 2]) == '[1, 2]'
    assert str(list(range(30))) == f'[{', '.join([str(el) for el in range(30)])}]'

    assert [2] * 2 == [2, 2]

    # m x n matrix
    m = 10
    n = 20
    v = [[0] * n  for _ in range(m)]
    assert len(v) == m
    assert len(v[0]) == n

    assert v.count([0] * n) == m
    assert sum([row.count(0) for row in v]) == m * n

    v.clear()
    assert len(v) == 0

    assert sum([1, 2]) == 3
    ## sum(1, 2) does not work

    assert min(1, 2) == 1
    assert min([1, 2]) == 1
    assert max(1, 2) == 2
    assert max([1, 2]) == 2

    v = [1, 2]
    assert v.copy() == v == copy(v) == deepcopy(v) == v[:]

    assert v.index(2) == 1
    # assert v.index(3) == -1

    assert v.reverse() is None
    assert v == [2, 1]

    assert v.sort() is None
    assert v == [1, 2]

    v.insert(1, 1.5)
    assert v == [1, 1.5, 2]

    assert v.pop(1) == 1.5

    v.insert(1, 1.5)
    assert v.pop(-2) == 1.5