이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Coding Groot

코딩 블로그

[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기

  • 2019.08.10 20:36
  • Programming Language/Python
글 작성자: Coding Groot

어떤 리스트에서 원하는 요소만 추출하기(필터링하기)

파이썬은 list에서 아주 쉽게 원하는 요소만 추출해서 새로운 list를 만들 수 있다.

방법 1: filter 함수 사용하기

첫 번째 방법은 filter내장 함수를 사용하는 것이다.

filter함수를 사용하기 위해서는 bool을 반환하는 함수와 추출할 대상인 list(또는 Iterable)가 필요하다.

filter함수는 다음과 같이 사용하면 된다.
예를 들어서, 내가
  originalList = [1, 2, 44, 52, 61, 7, 28, 92, 10]
위와 같은 list에서 5보다 큰 수만 뽑아내고 싶다고 해보자.
먼저, 5보다 크면 True를 반환하는 함수를 만든다.
  def  isBiggerThanFive(x):
      return x>5
다음, isBiggerThanFive함수를 인자로하는 filter함수를 쓰면 끝이다.
  newList = list(filter(isBiggerThanFive, originalList))
그러면 newList의 원소들은 [44, 52, 61, 7, 28, 92, 10]이 된다. 
참고로 filter함수를 list()로 감싸준 이유는 (python2와 다르게) python3의 filter함수는 iterable을 반환했기 때문이다. 그래서 list로 쓸려면 우리가 list로 만들어 줘야 한다.

방법 2: List Comprehension 사용하기

두 번째 방법은 List Comprehension을 사용하는 것이다.

  newList = [x for x in iterable]
기본적인 List Comprehension은 위와 같은 형태로 사용한다.
in iterable의 iterable은 반복(열거) 가능한 list와 같은 것. 
for x의 x는 iterable의 item(원소)로 사용할 변수.
제일 앞에 있는 x는 각각의 iterable 원소를 어떻게 변환할지 적는다.

(예시)

  • iterable 원소들을 모두 2배한 리스트를 만들고 싶으면 [2*x for x in iterable]
  • iterable를 그대로 복사한 리스트를 만들고 싶으면 [x for x in iterable]

기본적인 형태는 저렇고 어떤 list를 추출하려면 조건이 필요하기 때문에 Nested List Comprehension을 사용한다.
  newList  = [x for x in iterable if 조건]
Nested List Comprehension은 위와 같은 형태로 사용한다.
Nested List Comprehension은 조건을 추가하여 iterable에서 사용할 item(원소)를 선별할 수 있다.

Nested List Comprehension으로 (위의 filter함수와 같이) originalList에서 5보다 큰 원소들을 추출한 list를 만들려면 아래와 같이 사용하면 된다.
  newList = [x for x in origianlList if x>5]


More Examples

어떤 리스트(originalList)에서 짝수만 추출한 새로운 리스트를 만들고 싶은 경우 아래와 같은 방법들을 쓸 수 있다.

방법 1: filter

filter 함수

  • 형식: filter(함수_이름, iterable)
  • filter함수의 인자로 들어가는 함수의 리턴 타입은 bool형이여야 한다. 람다를 쓰면 편하다.
  • 리턴 타입: iterator(filter object)
  • Python3 내장 함수이다.
filteredList = list(filter(lambda x: x%2==0, originalList))

방법 2: List Comprehension

Nested List Comprehension

filteredList = [x for x in originalList if x%2==0]

물론 이런 기능들을 안 쓰고 내가 만들어도 된다.
하지만 개인적으로 이런 것들을 쓰니깐 더 코드가 간결해지는 것 같다(특히 코드가 길어질수록).


Icons made by Freepik from www.flaticon.com
 
반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Rye로 파이썬 프로젝트 세팅해보기!

    Rye로 파이썬 프로젝트 세팅해보기!

    2024.07.15
  • [파이썬] Thread를 사용하기 전에 알아야 할 몇 가지 주의점들

    [파이썬] Thread를 사용하기 전에 알아야 할 몇 가지 주의점들

    2020.05.23
  • [파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환

    [파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환

    2019.08.15
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (183)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 한빛미디어
  • Github
  • git
  • 회고
  • aws
  • tutorial
  • 서평
  • javascript
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바