MajorClass/Data Science

[데이터사이언스] python List Comprehension

쿠뱃봉 2022. 12. 10. 10:41

1. List Comprehension 이란?

size = 10
arr = [0] * size
for i in range(len(size)):
    arr[i] = i * 2
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

 

 

위와 같은 코드를

아래와 같이 두줄로 간단하게 표현.

 

size=10
arr=[i*2 for i in range(size)]

print(arr)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

2. List Comprehension의 여러가지 예

 

ex1) 

size=10
arr=[i*2 for i in range(size)]

new_arr=[n*n for n in arr]
print(new_arr)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

 

ex2)

1부터 10까지의 값에서 짝수만 원소로 갖는 리스트를 만들어라.

arr=[n for n in range(1,31) if n%2==0]
print(arr)
[2, 4, 6, 8, 10]

 

ex3)

1부터 30까지의 값에서 2의 배수이며 3의 배수인 원소를 갖는 리스트를 만들어라.

arr=[n for n in range(1,31) if n%2==0 and n%3==0]
print(arr)

 

ex4)

1부터 30까지의 값에서 2의 배수이거나 3의 배수인 원소를 갖는 리스트를 만들어라.

arr=[n for n in range(1,31) if n%2==0 or n%3==0]
print(arr)

 

ex5) 

2차원 배열을 1차원 리스트로 만들기

arr = [[1, 2, 3], 
       [4, 5, 6],
       [7, 8, 9],
       [10, 11, 12],
      ]
      
flat_one= [n for row in arr for n in row]
print(flat_one)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

 

ex6)

arr의 2차원은 유지하면서 각 원소의 값을 제곱하기

squared_list=[[n*n for n in row] for row in arr]
print(squared_list)
[[1, 4, 9], [16, 25, 36], [49, 64, 81], [100, 121, 144]]

 

reference 

https://shoark7.github.io/programming/python/about-list-comprehension-python