HAZEL

[ Python : Sequence ] List, Comprehension( 다중 if 문 , filter, map 사용 ), 본문

PROGRAMMING/Python

[ Python : Sequence ] List, Comprehension( 다중 if 문 , filter, map 사용 ),

Rmsid01 2022. 10. 5. 23:24

Chapter 03 : Sequence

: 요소가 연속적으로 나열되어있는 자료형
- 자료가 담겨있는 갯수
1 ) 컨테이너 형 ( container ) : 서로 다른 자료형을 담는다.
ex, list, tuple , collections.deque
2 ) 플랫형 ( flat ) : 단일 자료형만 담는다. 한개의 자료형
ex, str, bytes , bytearray , array.array , memoryview

- 가변형 / 불변형
1 ) 가변형 : list, bytearray , array.array , memoryview , deque
2 ) 불변형 : tuple, str , bytes

1. List

: 수정가능한, 자료형

chars = 'abcdefg'
list1 = []
for s in chars :
    list1.append(ord(s))
print(list1)

# output : [97, 98, 99, 100, 101, 102, 103]


1 ) Comprehending List
: 위에서 반복문으로 만든 list를 아래의 Comprehension 으로 간단하게 만들 수 있다. 속도 측면에서도 더 좋다.

list2 = [ord(s) for s in chars]
print( list2 )

# output: [97, 98, 99, 100, 101, 102, 103]


- Comprehension 을 사용하는 다른 방법.
a. 단일 if 문을 사용하기.
: if 문을 사용하여, 내가 원하는 조건의 값만 받아올 수 있다.

list3 = [ord(s) for s in chars if ord(s) > 100]

# output : [101, 102, 103]


b. 다중 If문 사용하기
: 다중 if 문을 사용하여, 조건을 받아올 수 있다.

c. map 사용하기
: map 은 여러개의 데이터를 지정된 함수로 처리해주는 함수이다.
보통은 map( 변환 함수, 리스트 ) 혹은 map( 변환 함수, 튜플 ) 로 사용한다.
map(lambda x : x if x==0 else 1) 처럼, lambda를 이용하여 조건을 걸 수 도 있습니다.

list4 = list(map(ord, chars))


d. filter 사용하기
: filter ( 함수, 값 ) 을 넣어서, 값에 대해서 원하는 조건의 값만 나오도록 해준다.

list5 = list(filter(lambda x: x > 100, map(ord, chars)))