-
Notifications
You must be signed in to change notification settings - Fork 2
/
class16-Comprehension in Data Structures-CipherSchools.py
104 lines (79 loc) · 1.57 KB
/
class16-Comprehension in Data Structures-CipherSchools.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#COMPREHENSION
a=[]
for i in range(5):
a.append(i)
print(a)
print(list(map(lambda x:x, range(5))))
#LIST COMPREHENSION
a=[i for i in range(5)]
print(a)
a=[] #Normal Approach
for i in range(5):
a.append(i**2)
print(a)
print(list(map(lambda x:x**2, range(5)))) #Functional Approach
a=[i**2 for i in range(5)] #LIST COMPREHENSION
print(a)
#2D array
'''
In 1D array we append single value in list,
but in 2D array we append list
'''
a=[]
for i in range(5):
temp=[]
for j in range(5):
temp.append(j)
a.append(temp)
print(a)
a=[[j for j in range(5)] for i in range(5)]
print(a)
"""
5 5 5 5 5
5 4 4 4 5
5 4 3 4 5
5 4 4 4 5
5 5 5 5 5
"""
n=5
a=[[max(i+1,j+1,n-i,n-j) for j in range(5)] for i in range(n)]
print(a)
#LIST COMPREHENSION
'''
[ <value to append> <for statement> ... <if statement> ...]
'''
s=[]
for i in range(2):
for j in range(2):
s.append(j)
print(s)
print([j for i in range(2) for j in range(2)])
#DICTIONARY COMPREHENSION
a={
2:4,
3:9,
4:16
}
print(a)
a={i:i**2 for i in range(5)}
print(a)
type(a)
#SET COMPREHENSION
a={1,2,3,4,5}
print(a)
type(a)
a={i for i in range(5)}
print(a)
type(a)
"""
#NOTE: There is no such thing as Tuple Comprehension
"""
a=(i for i in range(5))
print(type(a)) #generator
for i in a: #Lazy Loading Concept
print(i)
it=iter(a)
next(it) #Loaded first value of generator, stop iteration after end
"""
#NOTE: Generator is a lazy loading unlike other comprehension they are eager loading
"""