Python의 목록 이해 – 예제 포함
게시 됨: 2022-02-18Python에서 목록 이해는 목록, 문자열 및 튜플과 같은 기존 반복 가능 항목에서 새 목록을 만드는 데 도움이 됩니다.
간결한 구문을 사용하면 한 줄의 코드로 새 목록을 만들 수 있습니다. 그리고 이 튜토리얼에서는 그렇게 하는 방법을 알려줄 것입니다.
앞으로 몇 분 동안 다음을 배우게 됩니다.
-
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
— 숫자num
은pow
거듭제곱으로 올라갑니다.
그러나 Python에서 목록 이해를 사용하면 이 작업을 더 쉽게 수행할 수 있습니다. 구문을 배우도록 합시다.
Python 목록 이해 구문
목록 이해를 위한 일반 구문은 다음과 같습니다.
<new_list> = [<expression> for <item> in <iterable>]
위의 구문을 구문 분석해 보겠습니다.
- Python에서 목록은 한 쌍의 대괄호
[]
로 구분되므로 [[]
안에 목록 이해 문을 묶어야 합니다. - <
<iterable>
의<item>
은 iterable을 반복하고 있음을 나타냅니다. 목록, 튜플 및 문자열과 같은 개별 항목을 반복하고 액세스할 수 있는 모든 Python 객체는 반복 가능합니다. -
<expression>
은<iterable>
의 모든<item>
에 대해 계산하려는 출력입니다.
그리고 이것은 간단하게 들립니다. 예?
본질적으로 새 목록 을 얻기 위해 목록 의 모든 항목(또는 반복 가능한 항목)에 대해 뭔가를 하고 싶습니다.
이를 사용하여 아래 이미지와 같이 구문을 단순화할 수 있습니다.

구문을 배웠으므로 이제 코딩을 시작할 차례입니다. 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_arr
및 b_arr
이 있습니다.
그리고 이 4개의 직사각형 영역을 포함하는 새 목록 area
을 만들어야 합니다. area = length * breadth
를 기억하십시오.
l_arr = [4,5,1,3] b_arr = [2,1,7,9]
면적을 계산하려면 두 목록( l_arr
및 b_arr
)의 요소가 모두 필요합니다. 그리고 Python의 zip()
함수를 사용하여 수행할 수 있습니다.
참고: Python에서
zip()
함수는zip(*iterables)
구문을 사용하여 하나 이상의 반복 가능한 항목을 인수로 사용합니다. 그런 다음 튜플의 반복자를 반환합니다. 여기서 튜플i
에는 각 반복 가능한 항목의 요소i
가 포함됩니다.
다음 이미지는 이에 대해 자세히 설명합니다. l_arr
및 b_arr
에 4개의 값이 있으므로 인덱스 범위는 0에서 3 사이입니다. 보시다시피 튜플 0
에는 l_arr[0]
및 b_arr[0]
이 포함되고 튜플 1
에는 l_arr[1]
및 b_arr[1]
등이 있습니다.

따라서 아래와 같이 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
)을 충족하는 항목에 대해서만 계산하고 싶습니다. 그리고 이것은 다음과 같이 단순화된 구문으로 이어집니다.

이를 통해 코드 예제를 진행해 보겠습니다.
조건 예제를 사용한 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
에 액세스하고, - 숫자인 경우에만 새 목록
digits
에char
를 추가합니다.
다른 예를 들어보겠습니다.
#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에서 파일을 처리하는 방법을 배울 수 있습니다.