: 리스트 표현식은 리존의 리스트를 기반으로 새로운 리스트를 생성하는 간결하고 효율적인 방법입니다.
이는 for루프와 조건문을 한 줄로 결합하여 새로운 리스트를 만드는 파이썬의 특별한 방법입니다.
+List 또는 set, dictionary 안에서 for 문과 if문을 사용하여,'
컬렉션내부의 원소들을 구성시킬 수 있습니다.
≫ 주요 특징.
1. 간결성 : 여러 줄의 코드를 한 줄로 줄일 수 있습니다.
2. 가독성 : 적절히 사용하면 코드의 의도를 더 명확하게 표현할 수 있습니다.
3, 효율성 : 일반적인 for루프보다 더 빠르게 실행됩니다.
≫ 기본 구조.
- '표현식'은 새 리스트의 각 요소를 어떻게 만들지 정의합니다.
- 'for 항목 in 반복가능한_객체'는 어떤 데이터를 순회할지 지정합니다.
≫ 예시.
- 숫자의 제곱 리스트.
numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares) # 출력: [1, 4, 9, 16, 25]
x**2가 표현식이고,x가 항목,numbers가 반복가능객체입니다.
- 문자열 리스트에서 길이가 3 이상인 단어만 선택하기.
words = ["cat", "dog", "elephant", "bird"]
long_words = [word for word in words if len(word) >= 3]
print(long_words) # 출력: ['cat', 'dog', 'elephant', 'bird']
≫ 조건문 추가.
: 리스트 표현식에 조건문을 추가해줍니다.
ex)
≫ 중첨 루프.
: 중첩 루프는 두 개 이상의 시퀀스를 순회할 때 사용합니다. [ 중첩 for문 과 비슷]
- 다차원 데이터를 처리하거나, 복잡한 연산을 수행할 때 매우 유용.
python
matrix = [(i, j) for i in range(2) for j in range(3)]
print(matrix)
# 출력: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
- 외부 루프는i를 0부터 1까지 반복하고, 내부 루프는j를 0부터 2까지 반복합니다.
-조건문도 추가를 해서 만들 수 있습니다.
python
even_pairs = [(i, j) for i in range(3) for j in range(3) if (i + j) % 2 == 0]
print(even_pairs)
# 출력: [(0, 0), (0, 2), (1, 1), (2, 0), (2, 2)]
i와 j의 합이 짝수인 경우만 포함.
≫ 딕셔너리 컴프리헨션 : 딕셔너리를 생성하는 간결한 방법.
- > 리스트 컴프리헨션과 유사한 구조를 가지고 있지만,
키-값 쌍을 생성한다는 점이 다릅니다.
#딕셔너리 컴프리헨션의 장점.
1. 코드가 간결해집니다.
2. 가독성이 좋아집니다.
3. 일반적으로 for 루프보다 성능이 좋습니다.
squares = {x: x**2 for x in range(5)}
print(squares) # 출력: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
++조건문 추가
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares) # 출력: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
++기존 딕셔너리 변환.
old_dict = {'a': 1, 'b': 2, 'c': 3}
new_dict = {k: v*2 for k, v in old_dict.items()}
print(new_dict) # 출력: {'a': 2, 'b': 4, 'c': 6}