반응형
파이썬을 사용하는 사용자라면,
알고있으면 너무너무 유용한 기능이 있다.
>> 리스트 컴프리헨션 <<
1~10까지 배열을 담은 리스트를 만들기 위해서 가장 먼저 드는 생각은
list = []
for i in range(1,11):
list.append(i)
일 것이다.
직관적이고, 코드도 길지 않다.
이 코드는 앞에서 말한 리스트 컴프리헨션으로 한줄 코딩이 가능하다.
list = [i for i in range(1,11)]
모두 동일한 결과를 볼 수 있다.
반복문이 리스트 안에 들어간 형태이다.
복잡하게 구성도 가능하다.
list_ = [ i*2 for i in range(50) ] # 0~49까지 2를 곱한 값이 저장
list_2 = [ i for i in range(50) if i%2 ==0] # 0~49까지 2로 나눈 나머지가 0인 값 저장
list_3 = [ i if i%2==0 else 0 for i in range(50)] #0~49까지 2로나눈 나머지가 0인값 저장, 아닌경우 0
조금 이상한게, 리스트 컴프리헨션 안에 if문만 있는 경우에는 for문 뒤에 적어주지만,
if~else문이 있는 경우 for문 앞에 적어준다.
또한, 여러번 사용도 가능하다.
list_4 = [(x,'공부는',y) for x in ['파이썬','R'] for y in ['독학','블로그']]
#[('파이썬', '공부는', '독학'),
#('파이썬', '공부는', '블로그'),
#('R', '공부는', '독학'),
#('R', '공부는', '블로그')]
단순한 경우에는 유용하게 사용할 수 있지만,
for문으로 작성하는것 보다 가독성이 떨어지므로 과도하게 길어진다면 지양하는게 좋다.
조건문도 여러번 사용이 가능하다.
list_5 = [i for i in range(50) if i%2==0 if i%3==0] # 0~49까지 2와 3으로 나누어 떨어지는 수.
list_6 = [i for i in range(50) if i%2==0 and i%3==0]# 위와 같은 결과
if를 여러번 쓸 수도 있지만, if 조건 안에 다른 연산자를 활용할 수도 있다.
반응형
'python > 기초' 카테고리의 다른 글
[파이썬 기초] if ~ else (0) | 2021.11.23 |
---|---|
[파이썬 기초] Class / 함수 (args,kwargs) (2) | 2021.10.13 |
[python 기초] bytesIO를 메모리로 읽어서 해체하자. (0) | 2021.10.12 |
[파이썬 기초] try ~ except문 (0) | 2021.09.07 |
[파이썬 기초] 반복문 - enumerate, zip (0) | 2021.09.07 |