*Memo:
- My post explains a list and tuple comprehension.
- My post explains a generator comprehension.
- My post explains a set and the set with copy.
- My post explains a dictionary (1).
<Set Comprehension>:
1D set:
sample = {0, 1, 2, 3, 4, 5, 6, 7}
A = {x**2 for x in sample}
print(A)
# {0, 1, 4, 36, 9, 16, 49, 25}
The below is without a set comprehension:
sample = {0, 1, 2, 3, 4, 5, 6, 7}
A = set()
for x in sample:
A.add(x**2)
print(A)
# {0, 1, 4, 36, 9, 16, 49, 25}
2D set:
sample = {frozenset({0, 1, 2, 3}), frozenset({4, 5, 6, 7})}
A = {frozenset(y**2 for y in x) for x in sample}
print(A)
# {frozenset({16, 25, 36, 49}), frozenset({0, 1, 4, 9})}
The below is without a set comprehension:
sample = {frozenset({0, 1, 2, 3}), frozenset({4, 5, 6, 7})}
A = set()
for x in sample:
def func(x):
for y in x:
yield y**2
A.add(frozenset(func(x)))
print(A)
# {frozenset({16, 25, 36, 49}), frozenset({0, 1, 4, 9})}
3D set:
sample = {frozenset({frozenset({0, 1}), frozenset({2, 3})}),
frozenset({frozenset({4, 5}), frozenset({6, 7})})}
A = {frozenset(frozenset(z**2 for z in y) for y in x) for x in sample}
print(A)
# {frozenset({frozenset({16, 25}), frozenset({49, 36})}),
# frozenset({frozenset({9, 4}), frozenset({0, 1})})}
The below is without a set comprehension:
sample = {frozenset({frozenset({0, 1}), frozenset({2, 3})}),
frozenset({frozenset({4, 5}), frozenset({6, 7})})}
A = set()
for x in sample:
def func(x):
for z, y in x:
yield frozenset({z**2, y**2})
A.add(frozenset(func(x)))
print(A)
# {frozenset({frozenset({16, 25}), frozenset({49, 36})}),
# frozenset({frozenset({9, 4}), frozenset({0, 1})})}
<Dictionary(Dict) Comprehension>:
*Memo:
- A key can have a tuple but not a dictionary, list and set.
1D dictionary:
sample = [0, 1, 2, 3, 4, 5, 6, 7]
v = {x:x**2 for x in sample}
print(v)
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49}
The below is without a dictionary comprehension:
sample = [0, 1, 2, 3, 4, 5, 6, 7]
v = {}
for x in sample:
v.update({x:x**2})
print(v)
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49}
2D dictionary:
sample = ((0, 1, 2, 3), (4, 5, 6, 7))
v = {x: {y:y**2 for y in x} for x in sample}
print(v)
# {(0, 1, 2, 3): {0: 0, 1: 1, 2: 4, 3: 9},
# (4, 5, 6, 7): {4: 16, 5: 25, 6: 36, 7: 49}}
The below is without a dictionary comprehension:
sample = ((0, 1, 2, 3), (4, 5, 6, 7))
v = {}
for x in sample:
v.update({x:{}})
for y in x:
v[x].update({y:y**2})
print(v)
# {(0, 1, 2, 3): {0: 0, 1: 1, 2: 4, 3: 9},
# (4, 5, 6, 7): {4: 16, 5: 25, 6: 36, 7: 49}}
3D dictionary:
sample = (((0, 1), (2, 3)), ((4, 5), (6, 7)))
v = {x: {y: {z:z**2 for z in y} for y in x} for x in sample}
print(v)
# {((0, 1), (2, 3)): {(0, 1): {0: 0, 1: 1}, (2, 3): {2: 4, 3: 9}},
# ((4, 5), (6, 7)): {(4, 5): {4: 16, 5: 25}, (6, 7): {6: 36, 7: 49}}}
The below is without a dictionary comprehension:
sample = (((0, 1), (2, 3)), ((4, 5), (6, 7)))
v = {}
for x in sample:
v.update({x:{}})
for y in x:
v[x].update({y:{}})
for z in y:
v[x][y].update({z:z**2})
print(v)
# {((0, 1), (2, 3)): {(0, 1): {0: 0, 1: 1}, (2, 3): {2: 4, 3: 9}},
# ((4, 5), (6, 7)): {(4, 5): {4: 16, 5: 25}, (6, 7): {6: 36, 7: 49}}}
Top comments (0)