호세: 잘 돌아왔어요
이번 강의에서는 필터에 관해 얘기할 거예요
발전기, 반복기,
반복 기능이 완성됐으니 재미있는
빌트인 기능을 만들어 보죠
필터 함수는 Python에서
빌트인 함수로 파일이나 프로그램에서 호출할
수 있습니다 빌트인은 두 개의
인수를 필요로 하죠
filter 함수에 대한 첫
번째 인수는 또 다른
함수예요 또한 재생 가능한 거죠
이렇게 시작해요
친구 목록을 찾죠
롤프, 호세, 랜디 안나, 메리 같은 친구요 한 명이
빠졌네요
이제 필터 기능을
써서 R로 시작하는 친구만 불러올
거예요
R로 시작해요 filter가
되겠죠 이게 함수예요 함수 첫 번째
인수 인수 인수 1 참
또는 거짓을 반환하는 함수죠
이 filter 함수에 대한 첫 번째 인수는
우리가 필터하려는 것에 따라 참 또는 거짓을 리턴하는
또 다른 함수가 돼야 해요
이 위에 함수를 정의할게요
R로 시작해요
리턴 프렌드 닷 R로 시작하세요
프렌드.r은 참이 될 겁니다 여기
이 인수가 R로 시작한다면요 그렇지 않다면
거짓이 되겠죠
filter 함수에 대한 첫
번째 인수는 R
함수로 시작하고
두 번째 인수는 반복 가능해야
합니다 이게 뭔지 알죠 '친구'는
반복 가능하니까요 목록이에요
이게 필터 함수의 생김새죠 하는
일은 참으로 반환되는 요소만
유지해요
필터 기능의 첫 실행은
롤프가 친구에게 간다는 내용이에요
사실일 거예요 롤프가
필터 기능에 남게 되는
거죠
다시 해 볼게요. Jose에서는
R이 false로 시작하니까
필터가 이것을 지우고, 무시할
거예요.
흥미로운 점은 필터가
발전기를 반환해서
좀 더 효율적이란
거죠 저장하고
싶은 요소만 목록에 복사하는
대신 R로 시작하는 다음 요소를 호출해야 해요 다음
사용 가능한 요소를 얻으려면요 바로 이 경우
롤프죠
그걸 반복하면 랜디가 나오죠 그럼
끝으로 앞서
얘기한 예외인 stop 반복이 나옵니다 시퀀스의
끝이나 발생기,
반복기에 신호를 보내는 게 뭐냐는 거죠 끝에
도달했을 때요
for 루프를 할 때 배경에서
for 루프가 하는 일은
다음을 호출하는 겁니다 그리고 이 정지 반복에
도달하자마자 for 루프가
멈춥니다 그리고 오류는
발생하지 않죠 왜냐하면 정지 반복은
그걸 의미하도록 설계되었기 때문입니다
for 루프는 반복을 멈추는 구조물로 언제
끝날지 알 수 있어요
물론 시작을 R로 하면 생성기에 있는 모든
요소의 목록을 제공할
겁니다 각각의
요소를 검토해 새 목록에 넣겠죠
다시 그런 짓을 하면 어떻게
될 것 같아요?
빈 리스트를 갖게 됩니다 이 리스트
객체는 멈춤 반복을 호출하지 않습니다 멈춤 반복이 호출된 것을 볼 수
있습니다 그리고 아무것도 제공하지
않습니다 빈 리스트를
제공합니다 생성기가 이미 사용되었기
때문입니다 그리고 끝부분에 도달한
것을 기억하기 때문에 다른 것을 제공할
수 없죠
그래서 이 필터 함수에 들어가기 전에
생성기, 잇터레이터, 잇터러블을 설명하는 거예요
물론 여기서 매개 변수를 받아 그 매개 변수의
반환이 R로 시작하는
함수를 정의하는 대신 lamda를
사용할 수도 있어요
이 lamda 함수는 정확히
같은 거예요 하나의 매개 변수를
취하고 콜론 다음에 반환하는 걸 정의하죠
반환하는 건 x.r로 시작해요 x가 R로
시작하느냐에 따라 참이거나
거짓이 되죠
그게 더 편하다면 매개 변수
친구를 호출하세요 그럼 좀 더 명확해질
겁니다 이 함수가 이
친구들을 작동시킬 테니까요
그럼 저 함수는 더 이상
필요 없죠
이 코멘트도 이제 필요 없어요
무슨 뜻인지 아니까요
여기 이 필터 함수는 여기
이 생성기 표현과
동일해요 이 생성기 이해력이
말하고 있죠 친구들의 F
+ F요 F. R로 시작하면요
이 두 개는 똑같아요
발전기 용어예요 친구마다
새 발전기를 사용할 수 있는데
F가 R로 시작할 때만 쓸 수 있죠 이 두 개는
같은 거예요
누가 더 빨라요?
어떤 게 더 잘하죠?
이 경우에는 발전기가 더
잘 작동하네요
그 이유는 이 필터에
이 lamda 함수를 만들어야 하기 때문이에요
생성기 식에서 lamda
함수를 만들 필요는 없어요
프로그램 어딘가에 이미
여러분의 기능이 정의되어
있다면 filter 함수가 더 잘
작동할 수 있어요
어떤 경우엔 filter 함수가 더 읽기 쉽지만
다른 많은 경우엔
이해도가 더 높죠
어떤 걸 쓰실지 선택해
주세요 전 보통 이해도가 높은 걸 쓰거든요
파이터닉도 좀 더 강하고요
그런데 무슨 일이 일어나고
있는지 확실히 하기 위해 이
두 개의 필터와 발전기 통신이
제가 정의할 다른 함수와
동일해요
또 다른 필터 함수예요
이것과 비슷하죠 함수를
받아들여서 반복할 수 있고 함수가 참을 반환하는지 아닌지 확인하고 함수가 참이면 마지막에 I를
주죠
여기서 사용자 지정 필터를 호출한다고 가정해 보죠
R로 시작하는 R이 이 함수예요
재생 가능한 건 친구 목록이고요
반복할 수 있는 걸 반복하면 롤프의 첫 번째 요소를
얻을 수 있어요
R로 시작하는 친구가 F.U.N.I.가
맞는다면 양보할 거예요
I는 롤프예요
다음 행사에서 전화가 오면 롤프에게
연락하고 9번 줄 직후에
중단할 거예요
다음을 호출할 때, 다시
맨 위로 돌아가서 보면, 여기 I가 있고,
Jose가 있고, 문자열로 되어 있어요. Jose와
함수가 일치하는지 확인해 볼게요. 거짓이니까
아무것도 줄 수 없고 멈추지도 않을 거예요. 루프의
다음 요소로 가서 랜디가 R로 시작하는지
확인해 볼게요. 맞네요. 랜디도 줄이고
멈출게요.
다음에 다음을 호출하면 애나예요,
거짓이죠 양보하지 않고 계속합니다 저는 Mary예요,
거짓이죠 양보하지 않고 계속합니다
끝부분에 도달하면 반복이 멈춥니다 생성기
오브젝트의 끝에 도달하면 또 다른 반복이
멈춥니다 끝부분에 도달했다는 뜻이죠
부디 말이 됐으면 좋겠습니다
파이썬 을 좀 더 자세히 살펴보도록 하겠습니다
즉, 데이터를 관리하고 한 곳에서 다른 곳으로
데이터를 보내는 것과 제공하는 것은 아주 강력한
것입니다 왜냐하면 모든
값을 메모리에 동시에 저장하지 않고도 한 번에
하나씩 생성할 수 있기 때문이죠
이 비디오는 이 정도로
하고 이 필터 기능과 어떻게 사용되는지
보여드릴게요
필터 기능은 다른 많은 프로그램
언어에서도 볼 수 있어요 그러니
어디서든 보실 수 있죠 여러분의 프로그래밍
기술을 개발하고 프로그래밍 여정을 계속하는
동안에요
네, 여기까지예요 다음
영상에서 만나요