새로운 리스트를 만들 때 for 구문을 조합해서 쓰는데 이러한 작업을 굉장히 간결하게 하는 방법을 알아보았다.

아래 코드는 리스트 컴프리헨션을 적용한 코드이다.

new_list = [new_list for item in list]

아래 두 구문은 같은 결과를 가져온다.

리스트 컴프리헨션을 사용 시 코드를 굉장히 간결하게 쓸 수 있다.

numbers = [1,2,3]
new_list = []
for n in numbers :
    add_1 = n+1
    new_list.append(add_1)
numbers = [1,2,3]
new_list = [n+1 for n in numbers]

리스트 컴프리헨션 코딩 연습

  1. 기존 리스트의 숫자를 제곱하여 새로운 리스트로 만들기
numbers = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

squared_numbers = [num * num for num in numbers]
print(squared_numbers)

#결과
[1, 1, 4, 9, 25, 64, 169, 441, 1156, 3025]
  1. 기존 리스트에서 짝수만 골라내기
numbers = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

result = [num for num in numbers if num%2==0]
print(result)

#결과
[2, 8, 34]
  1. 겹치는 데이터

file1.txt와 file2.txt 에서 겹치는 내용을 리스트 컴프리헨션을 적용하여 얻을 수 있다.

with open(file="file1.txt") as data1 :
    list1 = data1.readlines()

with open(file="file2.txt") as data2 :
    list2 = data2.readlines()

result = [int(n) for n in list1 if n in list2]
print(result)

# 결과
[3, 6, 5, 33, 12, 7, 42, 13]

file1

3
6
5
8
33
12
7
4
72
2
42
13

file2.txt

3
6
13
5
7
89
12
3
33
34
1
344
42