1. 리스트 컴프리헨션
- 2차원 리스트를 초기화할 때 효과적으로 사용될 수 있음
- 특히, 다양한 코딩테스트 문제에서는 N X M 크기의 2차원 리스트를 사용하는 경우가 많은데, 리스트 컴프리헨션을 이용하면 2차원 리스트를 한 번에 초기화해야 할 때 매우 유용함
ex) 좋은 예시 : array = [[0] * m for _ in range(n)]
- 만약에, 2차원 리스트를 잘못 초기화했을 경우 예기치 않은 경우가 발생함
ex) 잘못된 예시 : array = [[0] * m] * n
=> 위 코드는 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식됨
# 코드 1 : 리스트 컴프리헨션
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array)
# 코드 2 : 일반적인 코드
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = []
for i in range(20):
if i % 2 == 1:
array.append(i)
print(array)
리스트 컴프리헨션을 이용한 2차원 배열 초기화 (좋은 예시)
# N X M 크기의 2차원 리스트 초기화
n = 4 # 행
m = 3 # 열
array = [[0] * m for _ in range(n)] # n번 반복이 될 때마다 가로 길이가 m인 리스트
print(a)
![]() |
![]() |
리스트 컴프리헨션을 이용한 2차원 배열 초기화 (잘못된 예시)
# N X M 크기의 2차원 리스 초기화 (잘못된 방법)
n = 4
m = 3
array = [[0] * m] * n
print(array)
array[1][1] = 5
print(array)
![]() |
![]() |
2. 리스트 관련 기타 메서드
a = [1, 2, 3]
print("기본 리스트 : ", a)
# 리스트에 원소 삽입
a.append(5)
print("삽입 : ", a)
# 오름차순 정렬
a.sort()
print("오름차순 정렬 : ", a)
# 내림차순 정렬
a.sort(reverse=True)
print("내림차순 정렬 : ", a)
a = [4, 3, 2, 1]
# 리스트 원소 뒤집기
a.reverse()
print("원소 뒤집기 : ", a)
# 특정 인덱스에 데이터 추가
a.insert(2, 3)
print("인덱스 2에 3 추가 : ", a)
# 특정 값인 데이터 개수 세기
print("값이 3인 데이터 개수 세기 : ", a.count(3))
# 특정 값 데이터 삭제
a.remove(1)
print("값이 1인 데이터 삭제 : ", a)
3. 리스트에서 특정 값을 갖는 원소를 모두 제거하기
remove 함수는 하나의 원소만 제거해주기 때문에, 특정 값을 갖는 원소들을 모두 제거하고자 한다면 이러한 방식을 사용
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
# 집합 자료형은 특별한 원소 존재 유무만을 체크하고자할때 매우 효과적으로 사용
# remove_list 에 포함되지 않은 값만을 저장
result = [i for i in a if i not in remove_set]
# a라는 리스트가 i라는 변수를 하나씩 확인하면서, 그 i라는 변수가 remove_set 포함되어 있지 않다면 그 원소들만 남겨두겠다.
print(result)