빅데이터 전문가 되기
Python_list comprehension 본문
기존에 배운 문법으로 1부터 10까지 정수를 순서대로 가지고 있는 리스트를 생성하는 코드는 다음과 같습니다.
numbers = []
for n in range(1, 10+1):
numbers.append(n)
이러한 코드를 컴프리헨션으로 표기하면 다음과 같습니다.
>>> [x for x in range(10)]
리스트 컴프리헨션이 작동하는 방식을 for문과 비교하면 다음과 같습니다.
리스트를 생성하는 방식은 대괄호([])를 통해 생성하는 방법은 동일합니다. 차이점은 컴프리헨션은 리스트 내부에 코드를 작성한다는 점입니다. 만약 딕셔너리 컴프리헨션 또는 셋 컴프리헨션 문법을 사용할 때는 대괄호를 사용합니다.
반복문은 별도로 작성하지 않고 리스트 컴프리헨션은 리스트 내부에 작성하여 반복합니다.
리스트 컴프리헨션은 for문에서 반복되는 변수를 콜론(:)다음에 줄을 바꿔 들여쓰기 하는 것이 아니라, for문 앞에 작성합니다. 컴프리헨션에서 사용한 x는 for문 내부에서 append 메소드에 인자로 넣은 변수 n과 같습니다.
만약 2의 배수를 10개 가지고 있는 리스트를 컴프리헨션을 사용해서 만들면 다음과 같습니다.
>>> [ 2*x for x in range(1, 10+1) ]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
조건 걸기
만약 1부터 10까지 숫자 중 짝수만 순차적으로 들어있는 리스트를 생성하는 코드는 다음과 같습니다.
even_numbers = []
for n in range(1, 10+1):
if n % 2 == 0:
even_numbers.append(n)
리스트 컴프리헨션에도 조건을 설정하여서 리스트를 생성할 수 있습니다.
컴프리헨션 문법을 통한 방법
컴프리헨션은 if 키워드를 지원합니다. 이때 if키워드는 for문 다음에 위치해야 합니다. 짝수를 담는 리스트 컴프리헨션은 다음과 같이 작성할 수 있습니다.
>>> [x for x in range(1, 10+1) if x % 2 == 0]
[2, 4, 6, 8, 10]
중복 표현
컴프리헨션은 내부에서 for 키워드와 if키워드를 몇 번이고 반복할 수 있습니다.
for
저녁으로 먹을 메뉴 쌈밥, 치킨, 피자 중 하나와 후식으로 먹을 사과, 아이스크림, 커피 를 정할 때 가능한 경우에 수를 뽑는 코드를 컴프리헨션으로 표현하면 다음과 같이 작성할 수 있습니다.
>>> [ (x, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피']]
[('쌈밥', '사과'),
('쌈밥', '아이스크림'),
('쌈밥', '커피'),
('치킨', '사과'),
('치킨', '아이스크림'),
('치킨', '커피'),
('피자', '사과'),
('피자', '아이스크림'),
('피자', '커피')]
이런식으로 컴프리헨션 문법은 다중 for문을 지원합니다.
for문이 작동하는 순서는 왼쪽에 있는 for문이 먼저 작동을 합니다.
가서 먹을지 배달을 시킬지 2가지 선택지도 추가한다면 다음과 같이 작성할 수 있습니다.
>>> [ (x, z, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피'] for z in ['배달 시키기', '가서 먹기']]
[('쌈밥', '배달 시키기', '사과'),
('쌈밥', '가서 먹기', '사과'),
('쌈밥', '배달 시키기', '아이스크림'),
('쌈밥', '가서 먹기', '아이스크림'),
('쌈밥', '배달 시키기', '커피'),
('쌈밥', '가서 먹기', '커피'),
('치킨', '배달 시키기', '사과'),
('치킨', '가서 먹기', '사과'),
('치킨', '배달 시키기', '아이스크림'),
('치킨', '가서 먹기', '아이스크림'),
('치킨', '배달 시키기', '커피'),
('치킨', '가서 먹기', '커피'),
('피자', '배달 시키기', '사과'),
('피자', '가서 먹기', '사과'),
('피자', '배달 시키기', '아이스크림'),
('피자', '가서 먹기', '아이스크림'),
('피자', '배달 시키기', '커피'),
('피자', '가서 먹기', '커피')]
실행 순서는 역시 왼쪽의 for문이 우선해서 작동합니다.
for문으로 바꾼다면 다음과 같습니다.
for x in ['쌈밥', '치킨', '피자']:
for y in ['사과', '아이스크림', '커피']:
for z in ['배달 시키기', '가서 먹기']:
print(x, z, y)
if
if문 또한 중복 해서 작성해서 여러 조건을 걸 수 있습니다.
>>> [ x for x in range(10) if x < 5 if x % 2 == 0 ]
[0, 2, 4]
numbers = []
for n in range(1, 10+1):
numbers.append(n)
이러한 코드를 컴프리헨션으로 표기하면 다음과 같습니다.
>>> [x for x in range(10)]
리스트 컴프리헨션이 작동하는 방식을 for문과 비교하면 다음과 같습니다.
리스트를 생성하는 방식은 대괄호([])를 통해 생성하는 방법은 동일합니다. 차이점은 컴프리헨션은 리스트 내부에 코드를 작성한다는 점입니다. 만약 딕셔너리 컴프리헨션 또는 셋 컴프리헨션 문법을 사용할 때는 대괄호를 사용합니다.
반복문은 별도로 작성하지 않고 리스트 컴프리헨션은 리스트 내부에 작성하여 반복합니다.
리스트 컴프리헨션은 for문에서 반복되는 변수를 콜론(:)다음에 줄을 바꿔 들여쓰기 하는 것이 아니라, for문 앞에 작성합니다. 컴프리헨션에서 사용한 x는 for문 내부에서 append 메소드에 인자로 넣은 변수 n과 같습니다.
만약 2의 배수를 10개 가지고 있는 리스트를 컴프리헨션을 사용해서 만들면 다음과 같습니다.
>>> [ 2*x for x in range(1, 10+1) ]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
조건 걸기
만약 1부터 10까지 숫자 중 짝수만 순차적으로 들어있는 리스트를 생성하는 코드는 다음과 같습니다.
even_numbers = []
for n in range(1, 10+1):
if n % 2 == 0:
even_numbers.append(n)
리스트 컴프리헨션에도 조건을 설정하여서 리스트를 생성할 수 있습니다.
컴프리헨션 문법을 통한 방법
컴프리헨션은 if 키워드를 지원합니다. 이때 if키워드는 for문 다음에 위치해야 합니다. 짝수를 담는 리스트 컴프리헨션은 다음과 같이 작성할 수 있습니다.
>>> [x for x in range(1, 10+1) if x % 2 == 0]
[2, 4, 6, 8, 10]
중복 표현
컴프리헨션은 내부에서 for 키워드와 if키워드를 몇 번이고 반복할 수 있습니다.
for
저녁으로 먹을 메뉴 쌈밥, 치킨, 피자 중 하나와 후식으로 먹을 사과, 아이스크림, 커피 를 정할 때 가능한 경우에 수를 뽑는 코드를 컴프리헨션으로 표현하면 다음과 같이 작성할 수 있습니다.
>>> [ (x, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피']]
[('쌈밥', '사과'),
('쌈밥', '아이스크림'),
('쌈밥', '커피'),
('치킨', '사과'),
('치킨', '아이스크림'),
('치킨', '커피'),
('피자', '사과'),
('피자', '아이스크림'),
('피자', '커피')]
이런식으로 컴프리헨션 문법은 다중 for문을 지원합니다.
for문이 작동하는 순서는 왼쪽에 있는 for문이 먼저 작동을 합니다.
가서 먹을지 배달을 시킬지 2가지 선택지도 추가한다면 다음과 같이 작성할 수 있습니다.
>>> [ (x, z, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피'] for z in ['배달 시키기', '가서 먹기']]
[('쌈밥', '배달 시키기', '사과'),
('쌈밥', '가서 먹기', '사과'),
('쌈밥', '배달 시키기', '아이스크림'),
('쌈밥', '가서 먹기', '아이스크림'),
('쌈밥', '배달 시키기', '커피'),
('쌈밥', '가서 먹기', '커피'),
('치킨', '배달 시키기', '사과'),
('치킨', '가서 먹기', '사과'),
('치킨', '배달 시키기', '아이스크림'),
('치킨', '가서 먹기', '아이스크림'),
('치킨', '배달 시키기', '커피'),
('치킨', '가서 먹기', '커피'),
('피자', '배달 시키기', '사과'),
('피자', '가서 먹기', '사과'),
('피자', '배달 시키기', '아이스크림'),
('피자', '가서 먹기', '아이스크림'),
('피자', '배달 시키기', '커피'),
('피자', '가서 먹기', '커피')]
실행 순서는 역시 왼쪽의 for문이 우선해서 작동합니다.
for문으로 바꾼다면 다음과 같습니다.
for x in ['쌈밥', '치킨', '피자']:
for y in ['사과', '아이스크림', '커피']:
for z in ['배달 시키기', '가서 먹기']:
print(x, z, y)
if
if문 또한 중복 해서 작성해서 여러 조건을 걸 수 있습니다.
>>> [ x for x in range(10) if x < 5 if x % 2 == 0 ]
[0, 2, 4]
numbers = []
for n in range(1, 10+1):
numbers.append(n)
이러한 코드를 컴프리헨션으로 표기하면 다음과 같습니다.
>>> [x for x in range(10)]
리스트 컴프리헨션이 작동하는 방식을 for문과 비교하면 다음과 같습니다.
리스트를 생성하는 방식은 대괄호([])를 통해 생성하는 방법은 동일합니다. 차이점은 컴프리헨션은 리스트 내부에 코드를 작성한다는 점입니다. 만약 딕셔너리 컴프리헨션 또는 셋 컴프리헨션 문법을 사용할 때는 대괄호를 사용합니다.
반복문은 별도로 작성하지 않고 리스트 컴프리헨션은 리스트 내부에 작성하여 반복합니다.
리스트 컴프리헨션은 for문에서 반복되는 변수를 콜론(:)다음에 줄을 바꿔 들여쓰기 하는 것이 아니라, for문 앞에 작성합니다. 컴프리헨션에서 사용한 x는 for문 내부에서 append 메소드에 인자로 넣은 변수 n과 같습니다.
만약 2의 배수를 10개 가지고 있는 리스트를 컴프리헨션을 사용해서 만들면 다음과 같습니다.
>>> [ 2*x for x in range(1, 10+1) ]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
조건 걸기
만약 1부터 10까지 숫자 중 짝수만 순차적으로 들어있는 리스트를 생성하는 코드는 다음과 같습니다.
even_numbers = []
for n in range(1, 10+1):
if n % 2 == 0:
even_numbers.append(n)
리스트 컴프리헨션에도 조건을 설정하여서 리스트를 생성할 수 있습니다.
컴프리헨션 문법을 통한 방법
컴프리헨션은 if 키워드를 지원합니다. 이때 if키워드는 for문 다음에 위치해야 합니다. 짝수를 담는 리스트 컴프리헨션은 다음과 같이 작성할 수 있습니다.
>>> [x for x in range(1, 10+1) if x % 2 == 0]
[2, 4, 6, 8, 10]
중복 표현
컴프리헨션은 내부에서 for 키워드와 if키워드를 몇 번이고 반복할 수 있습니다.
for
저녁으로 먹을 메뉴 쌈밥, 치킨, 피자 중 하나와 후식으로 먹을 사과, 아이스크림, 커피 를 정할 때 가능한 경우에 수를 뽑는 코드를 컴프리헨션으로 표현하면 다음과 같이 작성할 수 있습니다.
>>> [ (x, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피']]
[('쌈밥', '사과'),
('쌈밥', '아이스크림'),
('쌈밥', '커피'),
('치킨', '사과'),
('치킨', '아이스크림'),
('치킨', '커피'),
('피자', '사과'),
('피자', '아이스크림'),
('피자', '커피')]
이런식으로 컴프리헨션 문법은 다중 for문을 지원합니다.
for문이 작동하는 순서는 왼쪽에 있는 for문이 먼저 작동을 합니다.
가서 먹을지 배달을 시킬지 2가지 선택지도 추가한다면 다음과 같이 작성할 수 있습니다.
>>> [ (x, z, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피'] for z in ['배달 시키기', '가서 먹기']]
[('쌈밥', '배달 시키기', '사과'),
('쌈밥', '가서 먹기', '사과'),
('쌈밥', '배달 시키기', '아이스크림'),
('쌈밥', '가서 먹기', '아이스크림'),
('쌈밥', '배달 시키기', '커피'),
('쌈밥', '가서 먹기', '커피'),
('치킨', '배달 시키기', '사과'),
('치킨', '가서 먹기', '사과'),
('치킨', '배달 시키기', '아이스크림'),
('치킨', '가서 먹기', '아이스크림'),
('치킨', '배달 시키기', '커피'),
('치킨', '가서 먹기', '커피'),
('피자', '배달 시키기', '사과'),
('피자', '가서 먹기', '사과'),
('피자', '배달 시키기', '아이스크림'),
('피자', '가서 먹기', '아이스크림'),
('피자', '배달 시키기', '커피'),
('피자', '가서 먹기', '커피')]
실행 순서는 역시 왼쪽의 for문이 우선해서 작동합니다.
for문으로 바꾼다면 다음과 같습니다.
for x in ['쌈밥', '치킨', '피자']:
for y in ['사과', '아이스크림', '커피']:
for z in ['배달 시키기', '가서 먹기']:
print(x, z, y)
if
if문 또한 중복 해서 작성해서 여러 조건을 걸 수 있습니다.
>>> [ x for x in range(10) if x < 5 if x % 2 == 0 ]
[0, 2, 4]
'Python' 카테고리의 다른 글
사용자 정의 함수 (4) | 2023.04.13 |
---|---|
List 요소 삭제 (0) | 2023.04.13 |
시퀀스 자료형(sequence types) (1) | 2023.04.13 |
Immutable 과 Mutable (0) | 2023.04.13 |
Python 자료 모음 (0) | 2023.04.13 |