DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

Frozenset comprehension in Python

Buy Me a Coffee

*Memo:

  • My post explains a list comprehension.
  • My post explains a tuple comprehension.
  • My post explains a set comprehension.
  • My post explains a dictionary comprehension.
  • My post explains a generator comprehension.
  • My post explains a frozenset (1).

A comprehension is the concise expression to create an iterable and there are a list, tuple, set, frozenset, dictionary(dict) and generator comprehension:

<Frozenset comprehension>:

1D frozenset:

sample = frozenset([0, 1, 2, 3, 4, 5, 6, 7])

A = frozenset(x**2 for x in sample)

print(A)
# frozenset({0, 1, 4, 36, 9, 16, 49, 25})
Enter fullscreen mode Exit fullscreen mode

The below is without a frozenset comprehension:

sample = frozenset([0, 1, 2, 3, 4, 5, 6, 7])

A = []

for x in sample:
    A.append(x**2)

A = frozenset(A)

print(A)
# frozenset({0, 1, 4, 36, 9, 16, 49, 25})
Enter fullscreen mode Exit fullscreen mode
sample = frozenset([0, 1, 2, 3, 4, 5, 6, 7])

A = frozenset()

for x in sample:
    A = A.union({x**2})

print(A)
# frozenset({0, 1, 16, 49, 4, 36, 9, 25})
Enter fullscreen mode Exit fullscreen mode

2D frozenset:

sample = frozenset([frozenset([0, 1, 2, 3]), frozenset([4, 5, 6, 7])])

A = frozenset([frozenset(y**2 for y in x) for x in sample])

print(A)
# frozenset({frozenset({16, 25, 36, 49}), frozenset({0, 1, 4, 9})})
Enter fullscreen mode Exit fullscreen mode

The below is without a frozenset comprehension:

sample = frozenset([frozenset([0, 1, 2, 3]), frozenset([4, 5, 6, 7])])

A = []

for i, x in enumerate(sample):
    A.append([])
    for y in x:
        A[i].append(y**2)
    A[i] = frozenset(A[i])

A = frozenset(A)

print(A)
# frozenset({frozenset({16, 25, 36, 49}), frozenset({0, 1, 4, 9})})
Enter fullscreen mode Exit fullscreen mode
sample = frozenset([frozenset([0, 1, 2, 3]), frozenset([4, 5, 6, 7])])

A = frozenset()

for x in sample:
    def func(x):
        for y in x:
            yield y**2
    A = A.union(frozenset([frozenset(func(x))]))

A = frozenset(A)

print(A)
# frozenset({frozenset({16, 25, 36, 49}), frozenset({0, 1, 4, 9})})
Enter fullscreen mode Exit fullscreen mode

3D frozenset:

sample = frozenset([frozenset([frozenset([0, 1]), frozenset([2, 3])]),
                    frozenset([frozenset([4, 5]), frozenset([6, 7])])])

A = frozenset(frozenset(frozenset(z**2 for z in y) for y in x) for x in sample)

print(A)
# frozenset({frozenset({frozenset({16, 25}), frozenset({49, 36})}),
#            frozenset({frozenset({9, 4}), frozenset({0, 1})})})
Enter fullscreen mode Exit fullscreen mode

The below is without a frozenset comprehension:

sample = frozenset([frozenset([frozenset([0, 1]), frozenset([2, 3])]),
                    frozenset([frozenset([4, 5]), frozenset([6, 7])])])
A = []

for i, x in enumerate(sample):
    A.append([])
    for j, y in enumerate(x):
        A[i].append([])
        for z in y:
            A[i][j].append(z**2)
        A[i][j] = frozenset(A[i][j])
    A[i] = frozenset(A[i])

A = frozenset(A)

print(A)
# frozenset({frozenset({frozenset({16, 25}), frozenset({49, 36})}),
#            frozenset({frozenset({9, 4}), frozenset({0, 1})})})
Enter fullscreen mode Exit fullscreen mode
sample = frozenset([frozenset([frozenset([0, 1]), frozenset([2, 3])]),
                    frozenset([frozenset([4, 5]), frozenset([6, 7])])])
A = frozenset()

for x in sample:
    def func(x):
        for z, y in x:
            yield frozenset({z**2, y**2})
    A = A.union(frozenset([frozenset(func(x))]))

print(A)
# frozenset({frozenset({frozenset({16, 25}), frozenset({49, 36})}),
#            frozenset({frozenset({9, 4}), frozenset({0, 1})})})
Enter fullscreen mode Exit fullscreen mode

Top comments (0)