logo

Python의 중첩 목록 이해

List Comprehension은 List Comprehension의 가장 놀라운 기능 중 하나입니다. 파이썬 . 반복 가능한 객체를 반복하여 목록을 만드는 스마트하고 간결한 방법입니다. 중첩된 목록 이해는 중첩된 for 루프와 매우 유사한 다른 목록 이해 내의 목록 이해에 지나지 않습니다.

Python 구문의 중첩 목록 이해

아래는 중첩 구문입니다. 목록 이해 :

통사론: new_list = [[목록의 항목에 대한 표현식] 목록의 항목에 대한]



매개변수:

  • 표현 : 문장의 각 항목을 수정하는데 사용되는 표현식
  • 안건: 반복 가능한 요소
  • 목록: 반복 가능한 객체

Python 중첩 목록 이해 예제

다음은 중첩 목록 이해의 몇 가지 예입니다.

예시 1: 매트릭스 만들기

이 예에서는 우리가 할 수 있는 방법을 비교해 보겠습니다. 매트릭스를 생성하다 우리가 그것을 만들 때

목록 이해 없이

이 예에서는 중첩 루프 구조를 사용하여 5×5 행렬이 생성됩니다. 외부 루프는 5번 반복되어 빈 하위 목록을 추가합니다.matrix>, 내부 루프는 각 하위 목록을 0에서 4 사이의 값으로 채우고 결과적으로 연속적인 정수 값이 있는 행렬이 생성됩니다.

파이썬3




matrix>=> []> for> i>in> range>(>5>):> ># Append an empty sublist inside the list> >matrix.append([])> >for> j>in> range>(>5>):> >matrix[i].append(j)> print>(matrix)>

>

>

산출

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>

목록 이해 사용

단 한 줄의 중첩 목록 이해를 사용하여 동일한 출력을 얻을 수 있습니다. 이 예에서는 중첩된 목록 이해를 사용하여 5×5 행렬이 생성됩니다. 외부 컴프리헨션은 5회 반복하여 행을 나타내는 반면, 내부 컴프리헨션은 각 행을 0에서 4 사이의 값으로 채워서 연속적인 정수 값이 있는 행렬이 생성됩니다.

Verilog 매개변수

파이썬3




# Nested list comprehension> matrix>=> [[j>for> j>in> range>(>5>)]>for> i>in> range>(>5>)]> print>(matrix)>

>

>

산출

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>

예 2: List Comprehension을 사용하여 중첩 목록 필터링

여기서는 List Comprehension을 사용하거나 사용하지 않고 목록을 필터링하는 방법을 살펴보겠습니다.

목록 이해를 사용하지 않고

이 예에서 중첩 루프는 2D 행렬을 순회하여 목록 내의 Python 목록에서 홀수를 추출하고 이를 목록에 추가합니다.odd_numbers>. 결과 목록에는 행렬의 모든 홀수 요소가 포함됩니다.

파이썬3


마크 저커버그 교육



matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> []> for> row>in> matrix:> >for> element>in> row:> >if> element>%> 2> !>=> 0>:> >odd_numbers.append(element)> print>(odd_numbers)>

>

>

산출

[1, 3, 5, 7, 9]>

목록 이해 사용

이 예에서는 목록 이해력을 사용하여 목록을 간결하게 생성합니다.odd_numbers>2D 매트릭스의 요소를 반복하여 결과 목록에는 홀수 요소만 포함되어 동등한 중첩 루프 구조에 대한 간결하고 읽기 쉬운 대안을 제공합니다.

파이썬3




matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> [> >element>for> row>in> matrix>for> element>in> row>if> element>%> 2> !>=> 0>]> print>(odd_numbers)>

>

>

산출

[1, 3, 5, 7, 9]>

예시 3: 중첩된 하위 목록 평면화

목록 이해 없이

이 예에서는 이름이 지정된 2D 목록matrix>다양한 하위 목록 길이를 가진 항목은 중첩 루프를 사용하여 평면화됩니다. 각 하위 목록의 요소는 목록에 순차적으로 추가됩니다.flatten_matrix>, 원래 행렬이 평면화되어 표현됩니다.

파이썬3




# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> flatten_matrix>=> []> for> sublist>in> matrix:> >for> val>in> sublist:> >flatten_matrix.append(val)> print>(flatten_matrix)>

>

여우 또는 늑대
>

산출

[1, 2, 3, 4, 5, 6, 7, 8, 9]>

목록 이해 포함

이번에도 이 작업은 아래에 표시된 중첩 목록 이해를 사용하여 수행할 수 있습니다. 이 예에서는 이름이 지정된 2D 목록matrix>하위 목록 길이가 다양한 하위 목록은 중첩된 목록 이해를 사용하여 평면화됩니다. 표현식[val for sublist in matrix for val in sublist]>하위 목록의 각 요소를 순차적으로 포함하여 평면화된 목록을 간결하게 생성합니다.

파이썬3




# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> # Nested List Comprehension to flatten a given 2-D matrix> flatten_matrix>=> [val>for> sublist>in> matrix>for> val>in> sublist]> print>(flatten_matrix)>

>

>

산출

[1, 2, 3, 4, 5, 6, 7, 8, 9]>

예제 4: List Comprehension을 사용하여 문자열 조작

목록 이해 없이

이 예에서는 이름이 지정된 2D 목록matrix>포함된 문자열은 중첩을 사용하여 수정됩니다. 루프 . 내부 루프는 각 과일의 첫 글자를 대문자로 만들고, 외부 루프는 새로운 2D 목록을 구성합니다.modified_matrix>, 대문자로 된 과일을 사용하여 첫 글자가 대문자인 문자열 행렬이 생성됩니다.

파이썬3




matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> []> for> row>in> matrix:> >modified_row>=> []> >for> fruit>in> row:> >modified_row.append(fruit.capitalize())> >modified_matrix.append(modified_row)> print>(modified_matrix)>

두 문자열 파이썬의 차이점

>

>

산출

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>

목록 이해 포함

이 예에서는 이름이 지정된 2D 목록matrix>포함된 문자열은 중첩된 목록 이해를 사용하여 변환됩니다. 표현식[[fruit.capitalize() for fruit in row] for row in matrix]>각 과일의 첫 글자를 대문자로 시작하는 수정된 행렬을 효율적으로 생성하여 첫 글자가 대문자인 새로운 문자열 행렬을 생성합니다.

파이썬3




matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> [[fruit.capitalize()>for> fruit>in> row]>for> row>in> matrix]> print>(modified_matrix)>

>

>

산출

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>