PYTHON: 리스트 컴프리헨션의 조건, map과 filter의 활용 예시

2024. 9. 12. 22:26Troubleshooting

 

01 같은 로직을 활용하는 세 개의 변수 만들기


answers = [1,2,3,4,5]

a = [1,2,3,4,5] * 2000
b = [2,1,2,3,2,4,2,5] * 1250
c = [3,3,1,1,2,2,4,4,5,5] * 1000

result = [0,0,0]

for i,j in enumerate(answers):
    if a[i]==j:
        result[0] += 1
    if b[i]==j:
        result[1] += 1
    if c[i]==j:
        result[2] += 1

max_result = max(result)

[i+1 for i,j in enumerate(result) if j == max_result]

 

같은 로직을 사용하지만 각각의 변수에 새로운 값을 할당해야 할 때 tip: 변수 각각에 할당하지 말고 세 개의 값을 포함하는 리스트를 만들어서 인덱스를 활용해서 값을 할당한다.

 

02 리스트 컴프리헨션 if절과 if else절의 차이


 

<코드의 차이>

1. 필터링: 첫 번째 코드는 조건을 기준으로 항목을 "필터링"하여 포함시키는 반면, 두 번째 코드는 조건에 따라 각 항목에 대해 "다른 값"을 생성합니다.

2. 리스트 요소 개수: 첫 번째 코드는 조건을 만족하는 항목만 포함되기에 6개를 넣어도 3개가 나올 수 있고, 두 번째 코드는 모든 항목에 대해 조건에 따른 값을 포함하기에 6개를 넣으면 6개가 모두 출력된다.

 

03 map과 filter의 차이도 위와 유사하다.


 

1. map: 주어진 함수에 대해 iterable의 각 요소를 적용하여 새로운 iterable을 생성한다. 결과는 항상 같은 길이의 iterable이다.

2. filter: 주어진 함수에 대해 iterable의 각 요소를 적용하고, 그 결과가 True인 요소만을 추출하여 새로운 iterable을 생성한다. 결과의 길이는 원본 iterable의 길이와 다를 수 있다.

 

04 map 활용 예시 4가지: 유용하니까 기억해둔다.


 

05 filter 활용 예시 3가지: 유용하니까 기억해둔다.