Python의 목록 이해 – 예제 포함

게시 됨: 2022-02-18

Python에서 목록 이해는 목록, 문자열 및 튜플과 같은 기존 반복 가능 항목에서 새 목록을 만드는 데 도움이 됩니다.

간결한 구문을 사용하면 한 줄의 코드로 새 목록을 만들 수 있습니다. 그리고 이 튜토리얼에서는 그렇게 하는 방법을 알려줄 것입니다.

앞으로 몇 분 동안 다음을 배우게 됩니다.

  • for 루프를 사용하여 새 목록을 만드는 방법,
  • Python에서 목록 이해를 사용하기 위한 구문 및
  • if 조건문으로 목록 이해를 수정하는 방법.

또한 목록 이해를 더 잘 이해하는 데 도움이 되는 몇 가지 예제를 코딩할 것입니다.

뛰어들어봅시다.

for 루프를 사용하여 Python 목록을 만드는 방법

숫자 nums 의 목록 번호가 있다고 가정합니다. 그리고 nums 에 있는 모든 숫자의 큐브를 포함하는 또 다른 목록을 만들고 싶습니다. 다음은 Python에서 for 루프를 사용하여 수행하는 방법입니다.

 nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]

위의 코드에는 다음 단계가 있습니다.

  • 빈 목록 num_cubes 를 초기화합니다.
  • nums 목록을 반복합니다.
  • 각 숫자 num 에 액세스하고 지수 연산자 num**3 을 사용하여 큐브를 계산합니다.
  • 마지막으로 num_cubes 목록에 큐브 값을 추가합니다.

참고: Python에서 지수 연산자 ** 는 다음 구문과 함께 사용됩니다. num**pow — 숫자 numpow 거듭제곱으로 올라갑니다.

그러나 Python에서 목록 이해를 사용하면 이 작업을 더 쉽게 수행할 수 있습니다. 구문을 배우도록 합시다.

Python 목록 이해 구문

목록 이해를 위한 일반 구문은 다음과 같습니다.

 <new_list> = [<expression> for <item> in <iterable>]

위의 구문을 구문 분석해 보겠습니다.

  • Python에서 목록은 한 쌍의 대괄호 [] 로 구분되므로 [ [] 안에 목록 이해 문을 묶어야 합니다.
  • < <iterable><item> 은 iterable을 반복하고 있음을 나타냅니다. 목록, 튜플 및 문자열과 같은 개별 항목을 반복하고 액세스할 수 있는 모든 Python 객체는 반복 가능합니다.
  • <expression><iterable> 의 모든 <item> 에 대해 계산하려는 출력입니다.

그리고 이것은 간단하게 들립니다. 예?

본질적으로 새 목록 을 얻기 위해 목록모든 항목(또는 반복 가능한 항목)에 대해 뭔가를 하고 싶습니다.

이를 사용하여 아래 이미지와 같이 구문을 단순화할 수 있습니다.

목록 이해 구문
Python 목록 이해 구문(저자별 이미지)

구문을 배웠으므로 이제 코딩을 시작할 차례입니다. Geekflare의 온라인 Python IDE를 사용하여 이러한 예를 따를 수 있습니다. 또는 로컬 컴퓨터에서 실행할 수 있습니다.

Python 목록 이해 예제

이전 섹션에서는 nums 에서 새 목록 num_cubes 를 만들었습니다. 목록 이해를 사용하여 다시 작성해 보겠습니다.

숫자와 함께 목록 이해 사용하기

이제 다음과 같이 단순화된 구문을 사용하겠습니다.

  • <do-this> : 여기에서 각 num 를 세제곱해야 합니다. 따라서 <do-this>num**3 으로 바꿉니다.
  • <all-items> : 반복 변수는 목록의 개별 숫자인 num 입니다.
  • <this-list> : 우리가 가지고 있는 기존 목록은 nums 입니다.
  • 그리고 [num**3 for num in nums] 가 최종 표현식입니다.

이 모든 것을 종합하면 다음 코드 스니펫이 있습니다.

 num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]

축하합니다. 첫 번째 목록 이해를 코딩했습니다.

계속해서 Python 문자열로 작업해 보겠습니다.

문자열과 함께 목록 이해 사용하기

목록 authors 가 있다고 가정합니다. 좋아하는 저자로 아래 목록을 다시 작성할 수 있습니다.

 authors = ["jane austen","george orwell","james clear","cal newport"]

위 목록에서 저자 이름이 어떻게 소문자인지 주목하십시오. 이제 제목 케이스에 형식을 지정하고 author_list 라는 새 목록에 저장하려고 합니다.

참고: Python에서 문자열 메서드 title() 은 문자열을 인수로 받아들이고 제목의 경우 형식이 지정된 문자열의 복사본을 반환합니다. 즉, 각 단어의 첫 글자는 대문자입니다. First-name Last-name

다음은 수행해야 하는 모든 작업입니다.

  • authors 목록을 순환하고 목록의 각 author 에 대해,
  • author.title() 을 호출하여 문자열의 제목 대소문자 사본을 가져옵니다.

이에 대한 Python 코드는 다음과 같습니다.

 authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

위의 출력에서 ​​모든 저자의 이름이 제목 케이스에서 어떻게 형식이 지정되었는지 관찰하십시오. 이것이 바로 우리가 원했던 것입니다.

여러 목록에서 목록 이해 사용하기

지금까지 목록 이해를 사용하여 하나의 기존 목록에서 새 목록을 만드는 방법을 배웠습니다. 이제 여러 목록에서 새 목록을 만드는 방법을 알아보겠습니다.

예를 들어, 다음 문제를 고려하십시오. 4개의 직사각형의 길이와 너비를 포함하는 두 개의 목록 l_arrb_arr 이 있습니다.

그리고 이 4개의 직사각형 영역을 포함하는 새 목록 area 을 만들어야 합니다. area = length * breadth 를 기억하십시오.

 l_arr = [4,5,1,3] b_arr = [2,1,7,9]

면적을 계산하려면 두 목록( l_arrb_arr )의 요소가 모두 필요합니다. 그리고 Python의 zip() 함수를 사용하여 수행할 수 있습니다.

참고: Python에서 zip() 함수는 zip(*iterables) 구문을 사용하여 하나 이상의 반복 가능한 항목을 인수로 사용합니다. 그런 다음 튜플의 반복자를 반환합니다. 여기서 튜플 i 에는 각 반복 가능한 항목의 요소 i 가 포함됩니다.

다음 이미지는 이에 대해 자세히 설명합니다. l_arrb_arr 에 4개의 값이 있으므로 인덱스 범위는 0에서 3 사이입니다. 보시다시피 튜플 0 에는 l_arr[0]b_arr[0] 이 포함되고 튜플 1 에는 l_arr[1]b_arr[1] 등이 있습니다.

파이썬-zip-함수
Python zip() 함수(저자 이미지)

따라서 아래와 같이 zip(l_arr,b_arr) 을 반복할 수 있습니다.

 area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]

다음 섹션에서는 목록 이해 내에서 조건문을 사용하는 방법을 배웁니다.

조건 구문을 사용한 Python 목록 이해

목록 이해를 위한 이전 구문을 기반으로 시작하겠습니다.

구문은 다음과 같습니다.

 <new_list> = [<expression> for <item> in <iterable> if <condition>]

모든 항목에 대해 <expression> 을 계산하는 대신 특정 <condition> (여기서, condition := True )을 충족하는 항목에 대해서만 계산하고 싶습니다. 그리고 이것은 다음과 같이 단순화된 구문으로 이어집니다.

list-comprehension-with-condition-syntax
조건 구문을 사용한 Python 목록 이해(저자 이미지)

이를 통해 코드 예제를 진행해 보겠습니다.

조건 예제를 사용한 Python 목록 이해

#1. "I'm learning Python in 2022" 문자열이 제공됩니다. 이 문자열의 모든 숫자 목록을 얻고 싶습니다. 그래서 어떻게 합니까?

Python에서 <char>.isdigit() 은 문자 <char> 에 대해 작동하고 숫자(0-9)이면 True 를 반환합니다. 그렇지 않으면 False 를 반환합니다.

아래 코드 스니펫은 str1 문자열의 모든 숫자 목록을 수집하는 방법을 보여줍니다.

 str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']

위의 코드에서:

  • 당신은 문자열 str1 을 통해 루프,
  • isdigit() 메서드를 사용하여 숫자인지 확인하기 위해 각 char 에 액세스하고,
  • 숫자인 경우에만 새 목록 digitschar 를 추가합니다.

다른 예를 들어보겠습니다.

#2. 과일 목록이 있습니다. 그리고 b 로 시작하는 fruits 목록의 모든 과일을 포함하는 starts_with_b 목록을 만들고 싶습니다. startswith() 메서드를 사용하여 조건을 작성할 수 있습니다.

<str>.startswith('char') 는 <str>이 'char'로 시작하면 True 를 반환합니다. 그렇지 않으면 False 를 반환합니다.

 fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']

위의 출력에서 ​​우리는 예상대로 fruits 목록에서 'b' 로 시작하는 두 과일인 'blueberry''banana' 를 얻습니다.

이것으로 목록 이해에 대한 논의를 마치겠습니다.

결론

이 튜토리얼이 Python의 목록 이해를 이해하는 데 도움이 되었기를 바랍니다.

요약하자면:

  • <this-list>의 <all-items>에 대해 [<do this>] 를 사용하여 목록 이해를 사용하여 새 목록을 만들 수 있습니다.
  • 또한 if 조건문과 함께 구문 [<do this> for <all-items> in <this-list> if <condition-is-True>] 를 사용할 수 있습니다.

또한 여러 예제를 코딩했습니다. 다음 단계로 목록 이해를 사용하여 목록 생성을 위해 기존 Python 루프 중 일부를 다시 작성할 수 있습니다. 즐거운 코딩! 다음 튜토리얼까지.

이제 목록을 사전으로 변환하는 방법을 살펴보거나 Python에서 파일을 처리하는 방법을 배울 수 있습니다.