Language/Python

Python 강의 정리 7. 튜플, 람다(map(),filter() 예제)

Jen'_' 2021. 5. 3. 11:12
반응형

 

튜플(tuple)

튜플(tuple)은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다.

  1. 리스트는 [ ]으로 둘러싸지만 튜플은 ( )으로 둘러싼다.
  2. 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.

 

강의 정리

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
# 튜플: 리스트와 유사한 자료형, 한번 결정된 요소는 바꿀 수 없음
tuple_test=(102030)
print(tuple_test)
print()
 
# 요소를 하나만 가지는 리스트
= [273]
# 요소를 하나만 가지는 튜플
= (273,)
 
# 리스트와 튜플의 특이한 사용
[a, b] = [1020]
(c, d) = (1020)
 
print("a:",a)
print("b:",b)
print("c:",c)
print("d:",d)
print()
 
# 튜플은 괄호 생략 가능, 리스트는 안됨
tuple_test = 10203040
print("# 괄호가 없는 튜플의 값과 자료형 출력")
print("tuple_test: ", tuple_test)
print("type(tuple_test): ", type(tuple_test))
print()
 
a, b, c = 102030
print("# 괄호가 없는 튜플을 활용한 할당")
print("a: ", a)
print("b: ", b)
print("c: ", c)
print()
 
# 변수의 값을 교환하는 튜플
a, b = 1020
print("# 교환 전 값")
print("a: ", a)
print("b: ", b)
print()
 
a, b = b, a
print("# 교환 후 값")
print("a: ", a)
print("b: ", b)
print()
 
# 리스트도 가능!
a, b = [1020]
a, b = b, a
print("a: ", a)
print("b: ", b)
print()
 
# 여러개의 값 리턴하기
def test():
    return (1020)
a, b = test()
print(a, b)
-----------
(result)
(102030)
 
a: 10
b: 20
c: 10
d: 20
 
# 괄호가 없는 튜플의 값과 자료형 출력
tuple_test:  (10203040)
type(tuple_test):  <class 'tuple'>
 
# 괄호가 없는 튜플을 활용한 할당
a:  10
b:  20
c:  30
 
# 교환 전 값
a:  10
b:  20
 
# 교환 후 값
a:  20
b:  10
 
a:  20
b:  10
 
10 20
 
cs

 


 

람다(lambda)

- 함수를 한줄로 간결하게 만들 때 사용한다.

 

lambda 매개변수1, 매개변수2, .... : 매개변수를 이용한 표현식

 

def power(x)
  return x*x

     

lambda x : x*x

 

 

 

강의 정리

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
# 매개변수로 받은 함수를 10번 호출하는 함수
def call_10_times(func): # func: 매개변수
    for i in range(10):
        func() # func(): 함수
 
def print_hello():
    print("치킨")
 
call_10_times(print_hello)
print()
 
# map(함수, 리스트): 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성
# filter(함수, 리스트): 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것만으로 새로운 리스트를 구성
# 둘다 제너레이터 -> 이터레이터(순환값)을 발생시킨다
def power(item):
    return item * item
def under_3(item):
    return item < 3
list_a = [12345]
 
# map() 함수 사용
output = map(power, list_a)
print("# map()함수의 실행 결과")
print("map(power, list_a): ", output) # 메모리 주소값 반환
print("map(power, list_a): ", list(output)) # 이터러블로 만들어 줘야함
print()
 
# filter() 사용
output = filter(under_3, list_a)
print("# filter()함수의 실행 결과")
print("filter(under_3, list_a): ", output)
print("filter(under_3, list_a): ", list(output)) # 이터러블로 만들어 줘야함
print()
 
# 람다를 사용하면 위의 함수들이 더욱 간결해짐
power = lambda x : x*x
under_3 = lambda x : x<3
 
list_a = [1,2,3,4,5]
 
output = map(power, list_a)
print("# map()함수의 실행 결과")
print("map(power, list_a): ", output)
print("map(power, list_a): ", list(output))
print()
 
# 람다 예제 
numbers = list(range(111))
print("# 홀수만 추출하기")
print(list(filter(lambda x : x % 2 == 1, numbers)))
print("\n # 3 이상, 7 미만 추출하기")
print(list(filter(lambda x : 3 <= x < 7, numbers)))
print("\n # 제곱해서 50 미만 추출하기")
print(list(filter(lambda x : x**2 < 50, numbers)))
print(tuple(filter(lambda x : x**2 < 50, numbers))) # 튜플도 가능!
---------
(result)
치킨
치킨
치킨
치킨
치킨
치킨
치킨
치킨
치킨
치킨
 
# map()함수의 실행 결과
map(power, list_a):  <map object at 0x000001FA20AE7B50>
map(power, list_a):  [1491625]
 
# filter()함수의 실행 결과
filter(under_3, list_a):  <filter object at 0x000001FA20AF43A0>
filter(under_3, list_a):  [12]
 
# map()함수의 실행 결과
map(power, list_a):  <map object at 0x000001FA20AB9D60>
map(power, list_a):  [1491625]
 
# 홀수만 추출하기
[13579]
 
 # 3 이상, 7 미만 추출하기
[3456]
 
 # 제곱해서 50 미만 추출하기
[1234567]
(1234567)
cs

 

반응형