Comprehension in Python (1)
Super Kai (Kazuya Ito)

Super Kai (Kazuya Ito) @hyperkai

About: I'm a web developer. Buy Me a Coffee: ko-fi.com/superkai SO: stackoverflow.com/users/3247006/super-kai-kazuya-ito X(Twitter): twitter.com/superkai_kazuya FB: facebook.com/superkai.kazuya

Joined:
Oct 21, 2021

Comprehension in Python (1)

Publish Date: Jun 5
0 0

Buy Me a Coffee

*Memos:

  • My post explains a dictionary(dict) comprehension and generator comprehension.

A comprehension is the concise way to create an iterable. There are a list comprehension, tuple comprehension, set comprehension, dictionary(dict) comprehension and generator comprehension. *A comprehension is an expression.

<List Comprehension>

1D list:

v = [x**2 for x in range(6)]

print(v) # [0, 1, 4, 9, 16, 25]
Enter fullscreen mode Exit fullscreen mode

*The below is without a list comprehension.

v = []

for x in range(6):
    v.append(x**2)

print(v) # [0, 1, 4, 9, 16, 25]
Enter fullscreen mode Exit fullscreen mode

2D list:

sample = [[0, 1, 2], [3, 4, 5]]

v = [[y**2 for y in x] for x in sample]

print(v) # [[0, 1, 4], [9, 16, 25]]
Enter fullscreen mode Exit fullscreen mode

*The below is without a list comprehension.

sample = [[0, 1, 2], [3, 4, 5]]
v = []

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

print(v) # [[0, 1, 4], [9, 16, 25]]
Enter fullscreen mode Exit fullscreen mode

<Tuple Comprehension>

*tuple() is used for a tuple comprehension because () is already used for a generator comprehension.

1D tuple:

v = tuple(x**2 for x in range(6))

print(v) # (0, 1, 4, 9, 16, 25)
Enter fullscreen mode Exit fullscreen mode

*The below is without a tuple comprehension.

v = []

for x in range(6):
    v.append(x**2)

v = tuple(v)

print(v)
# (0, 1, 4, 9, 16, 25)
Enter fullscreen mode Exit fullscreen mode

2D tuple:

sample = [[0, 1, 2], [3, 4, 5]]

v = tuple(tuple(y**2 for y in x) for x in sample)

print(v) # ((0, 1, 4), (9, 16, 25))
Enter fullscreen mode Exit fullscreen mode

*The below is without a tuple comprehension.

sample = [[0, 1, 2], [3, 4, 5]]
v = []

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

v = tuple(v)

print(v) # [[0, 1, 4], [9, 16, 25]]
# ((0, 1, 4), (9, 16, 25))
Enter fullscreen mode Exit fullscreen mode

<Set Comprehension>

1D set:

v = {x**2 for x in range(6)}

print(v) # {0, 1, 4, 9, 16, 25}
Enter fullscreen mode Exit fullscreen mode

*The below is without a set comprehension.

v = set()

for x in range(6):
    v.add(x**2)

print(v) # {0, 1, 4, 9, 16, 25}
Enter fullscreen mode Exit fullscreen mode

2D set:

sample = [[0, 1, 2], [3, 4, 5]]

v = {tuple(y**2 for y in x) for x in sample}

print(v) # {(9, 16, 25), (0, 1, 4)}
Enter fullscreen mode Exit fullscreen mode

*The below is without a set comprehension.

sample = [[0, 1, 2], [3, 4, 5]]
v = set()

for x in sample:
    def func(x):
        for y in x:
            yield y**2
    v.add(tuple(func(x)))

print(v) # {(9, 16, 25), (0, 1, 4)}
Enter fullscreen mode Exit fullscreen mode

Comments 0 total

    Add comment