반응형
리스트 함축(list comprehensions)
파이썬에서는 리스트 함축 개념을 지원합니다. 일반적으로 리스트를 생성할 때는 [ ] 괄호 안에 값을 하나씩 입력합니다. 그런데 만약 리스트 원소들 사이의 관계를 특정 함수로 정의할 수 있다면, 우리는 함수를 입력하여 리스트를 간편하게 생성할 수 있습니다. 이는 학교에서 배우는 '집합'을 정의하는 것과 비슷합니다. 집합을 정의하는 방법으로는 '원소나열법'과 '조건제시법'이 있습니다. 원소나열법은 우리가 이제껏 해온 것 처럼 원소를 하나하나 나열하는 방식이고, 조건제시법은 이 집합 안에 들어갈 원소들이 어떤 조건을 가지는지를 제시하는 방식입니다.
- 리스트 함축 형식
compList = [expression for i in old_list if filter(i)]
- expression: 출력식. 변수 범위 안에 있는 원소가 (조건식을 만족하는 경우) 어떤 연산을 거쳐 출력될 것인지를 나타냄
- for i in old_list: 출력식에 들어갈 변수를 정의하고 변수의 범위를 설정
- if filter(i): 선택 사항. 만약 이 부분이 설정되어 있다면, 이 조건이 참이어야 새로운 리스트에 항목이 추가됨
n = [x**2 for x in range(5)]
# n = [0, 1, 4, 9, 16]
N = [x for x in range(10) if x%2 == 0]
# N = [0, 2, 4, 6, 8]
- 리스트 함축은 숫자 뿐만 아니라 문자열에 대해서도 적용 가능
li1 = ['Hi', 'my', 'name', 'is', 'morning']
li2 = [word[0] for word in li1]
# li2 = ['H', 'm', 'n', 'i', 'm']
- 리스트 함수에는 두개 리스트로부터 변수를 받아 상호곱 형태의 집합을 생성할 수도 있음
Alpha = ['A', 'B', 'C']
Num = [1, 2, 3]
jOint = [(x, y) for x in Alpha for y in Num]
# [('A', 1), ('A', 2), ('A', 3), ('B', 1), ('B', 2), ('B', 3), ('C', 1), ('C', 2), ('C', 3)]
반응형
'Python' 카테고리의 다른 글
[Python] 파이썬 자료구조 종류 (0) | 2023.10.29 |
---|---|
[Python] 2차원 리스트 (1) | 2023.10.22 |
[Python] 리스트 얕은 복사, 깊은 복사 차이 (1) | 2023.10.17 |
[Python] 리스트 연산 (0) | 2023.10.13 |
[Python] 시퀀스 자료형 (0) | 2023.10.13 |