---
title: "set"
url: https://perrotta.dev/2026/01/set/
last_updated: 2026-01-09
---


```python
if __name__ == "__main__":
    s = set()
    assert len(s) == 0

    assert set([1]) == set([1])
    assert set([1]) <= set([1, 2])
    assert set([1]) < set([1, 2])

    t = set([1])
    assert len(t) == 1

    # union
    assert set([1]) | set([2]) == set([1, 2])

    # intersection
    assert set([1, 2]) & set([2]) == set([2])

    # symmetric difference == union - intersection
    assert set([1, 2, 3]) ^ set([3, 4]) == set([1, 2, 4])

    assert len(set([1, 1, 2])) == 2
    assert set([1, 1, 2]) == set([1, 2])

    s.add(3)
    assert s == set([3])

    s.add(4)
    s.remove(3)
    assert s == set([4])
    s.add(4)
    assert s == set([4])
    assert 4 in s
    assert 3 not in s

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

    assert set([1]).copy() == set([1])

    assert set([1, 2]) - set([1]) == set([2])

    s = set([1, 2, 3])
    s.difference_update(set([1]))
    assert s == set([2, 3])
    s -= set([2])
    assert s == set([3])

    assert set([1]) & set([2]) == set()

    assert set() == set([])

    assert list(set([1, 2])) == [1, 2]
    assert list(set([2, 1])) == [1, 2]

    assert set([2]) < set([1, 2])

    s = set([3, 4, 1])
    s.pop()
    assert s == set([3, 4])
    s.pop()
    assert s == set([4])

    s = set([1])
    t = set([2])

    ## s |= t
    s.update(t)
    assert s == set([1, 2])

    assert frozenset({1}) == set({1})

    hash(frozenset({1}))
    try:
        hash(set({1}))
        assert False
    except Exception as e:
        assert "unhashable type: 'set'" in str(e)
```

