34.4 연습문제: 이미지 파일만 가져오기

다음 소스 코드를 완성하여 .jpg, .png 이미지 파일만 출력되게 만드세요. 여기서는 람다 표현식을 사용해야 하며 출력 결과는 리스트 형태라야 합니다.

practice_lambda.py

files = ['font', '1.png', '10.jpg', '11.gif', '2.jpg', '3.png', 'table.xslx', 'spec.docx']
 
print(                                                                    )

실행 결과

['1.png', '10.jpg', '2.jpg', '3.png']

정답

list(filter(lambda x: x.find('.jpg') != -1 or x.find('.png') != -1, files))

해설

리스트 files에는 여러 종류의 파일 이름이 들어있는데 .jpg, .png 파일만 가져오려면 filter를 사용해야 합니다. 그리고 filterlambda 또는 함수의 반환값이 True일 때 해당 요소를 가져옵니다. 따라서 람다 표현식을 작성할 때 매개변수가 '.jpg', '.png'이면 True를 반환하도록 만듭니다. 먼저 문자열에서 find 메서드를 사용하면 찾을 문자열이 있을 때 인덱스를 반환하고 없을 때는 -1을 반환합니다. 그래서 조건식은 x.find('.jpg') != -1 or x.find('.png') != -1과 같이 만들고 .jpg, .png 둘 중 하나라도 참이면 되므로 findor 연산자로 연결해주면 됩니다.