리스트 컴프리헨션

  • 리스트를 초기화하는 방법 중 하나
  • 대괄호([]) 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있음
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]

print(array)

[출력]

>> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i * i for i in range(1, 10)

print(array)

[출력]

>> [1, 4, 9, 16, 25, 36, 49, 64, 81]

 

2차원 리스트를 초기화할 때 매우 효과적으로 사용될 수 있음

# N * M 크기의 2차원 리스트 초기화
n = 3
m = 4
array = [[0] *m for _ in range(n)]

print(array)

[출력]

>> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

 

📍특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션 이용해야함

# N * M 크기의 2차원 리스트 초기화(잘못된 방법)
n = 3
m = 4
array = [[0] * m] *n

print(array)

array[1][1] = 5
print(array)

[출력]

>> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

     [[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]

내부적으로 포함된 3개의 리스트가 모두 동일한 객체에 대한 3개의 레퍼런스로 인식되기 때문에 모두 5로 변경됨.

 

'Python > 공부' 카테고리의 다른 글

파이썬 n진수 변환  (0) 2023.01.07
파이썬 최대공약수, 최소공배수 함수 - gcd, lcm  (2) 2023.01.05
입력  (0) 2022.12.31
Python 내장함수 - enumerate  (0) 2022.03.23
클래스  (0) 2022.03.18

+ Recent posts