logo

Python – 개별 요소로 목록을 평면화

이 기사에서는 Python에서 목록 이해를 통해 목록 목록을 평면화하는 방법을 배웁니다.

때로는 Python 목록으로 작업하는 동안 목록을 평면화해야 하는 문제가 발생할 수 있습니다. 즉, 혼합 목록을 평면화된 목록으로 변환해야 합니다. 이는 1D 목록을 입력으로 사용하는 도메인에 응용 프로그램을 가질 수 있습니다.



이 작업을 수행할 수 있는 특정 방법에 대해 논의해 보겠습니다.

예:

  Input  : [[1,3, 'geeks'], [4,5], [6, 'best']]   Output  : [1, 3, 'geeks', 4, 5, 6, 'best']   Explaination:   Flattening convert a mixed list to a flattened one.>

Python에서 목록을 개별 요소로 평면화하는 방법

다음은 Python에서 목록 목록을 평면화하는 방법에서 다룰 방법입니다.



  • 다음을 사용하여 목록 평면화 목록 이해
  • 다음을 사용하여 목록 평면화 합집합()
  • 다음을 사용하여 목록 평면화 고리
  • 다음을 사용하여 목록 평면화 flatten() 메서드
  • 다음을 사용하여 목록 평면화 체인() ~와 함께 isinstance()
  • 다음을 사용하여 목록 평면화 줄이다() 기능
  • groupby를 사용하여 목록 평면화
  • 다음을 사용하여 목록 평면화 itertools.chain.from_iterable()
  • 재귀를 사용하여 목록 평면화

1. 목록 이해를 사용하여 목록 목록을 평면화

여기서 우리는 목록 이해 목록을 2D에서 1D로 평면화합니다.

파이썬3




res>=> [i>for> row>in> [[>1>,>3>,>'geeks'>], [>4>,>5>],> >[>6>,>'best'>]]>for> i>in> row]> print>(res)>

항상 Verilog

>

>

산출:

[1, 3, 'geeks', 4, 5, 6, 'best']>

시간 복잡도: O(n) 여기서 n은 목록의 요소 수입니다.
보조 공간: O(n) 여기서 n은 목록의 요소 수입니다.

2. sum() 함수를 사용하여 목록 목록을 평면화

여기서는 합계() 함수 test_list를 첫 번째 매개변수로 반복 가능한 객체로 전달하고 두 번째 매개변수를 요소를 저장하는 빈 목록으로 전달했습니다.

파이썬3




test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> test_list>=> sum>(test_list, [])> print>(test_list)>

>

>

산출:

[1, 3, 'gfg', 4, 5, 6, 'best']>

시간 복잡도: O(n), 여기서 n은 test_list 목록의 길이입니다.
보조 공간: O(n) 크기 n의 추가 공간이 생성됩니다. 여기서 n은 목록의 요소 수입니다.

3. f 사용 또는 루프 목록의 목록을 평면화

위의 기능을 조합하여 이 작업을 수행할 수 있습니다. 여기에서는 목록의 인스턴스를 확인하고 이를 평면화하고 나머지 요소를 목록에 무자비하게 추가합니다.

파이썬3




def> flatten(test_list):> >if> isinstance>(test_list,>list>):> >temp>=> []> >for> ele>in> test_list:> >temp.extend(flatten(ele))> >return> temp> >else>:> >return> [test_list]> # Initializing list> test_list>=> [>'gfg'>,>1>, [>5>,>6>,>'geeks'>],>67.4>, [>5>],>'best'>]> # Flatten List to individual elements> # using loop + isinstance()> res>=> flatten(test_list)> > # printing result> print> (>'The List after flattening : '> +> str>(res))>

>

>

산출:

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>

시간 복잡도: 이 함수의 O(n)은 n이 중첩 목록의 총 요소 수입니다.
공간 복잡도: 평면화된 하위 목록을 저장하기 위해 각 재귀 호출에 대해 새 목록 임시가 생성되고 최종 평면화된 목록이 res 변수에 저장되므로 이 함수의 함수도 O(n)입니다.

4. flatten() 메소드를 사용하여 목록 목록을 평면화

팬더 flatten()은 1차원으로 축소된 배열의 복사본을 반환합니다.

파이썬3




from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))>

>

>

산출:

[1, 3, 'gfg', 4, 5, 6, 'best']>

5. 유 isinstance()를 사용하여 chain()을 노래합니다. 목록 목록을 평면화하려면

이는 이 작업을 수행할 수 있는 또 다른 방법입니다. 이에, 어느 우리는 다음을 사용하여 반복 작업을 수행합니다. 체인() 목록 인스턴스 확인 , 이는 다음을 사용하여 수행됩니다. isinstance() .

파이썬3


Sklearn 정확도 점수



from> itertools>import> chain> # Initializing list> test_list>=> [>'gfg'>,>1>, [>5>,>6>,>'geeks'>],>67.4>, [>5>],>'best'>]> # Flatten List to individual elements> # using chain() + isinstance()> res>=> list>(chain(>*>[ele>if> isinstance>(ele,>list>)> >else> [ele]>for> ele>in> test_list]))> > # printing result> print> (>'The List after flattening : '> +> str>(res))>

>

>

출력 :

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>

시간 복잡도: 에)
보조 공간: 에)

6. 감소() 함수를 사용하여 목록 목록을 평면화

그만큼 줄이다() 함수는 기능 도구 기준 치수. 주어진 시퀀스에 두 개의 인수로 구성된 함수를 연속적으로 적용하고 단일 값을 반환합니다.

파이썬3




from> functools>import> reduce> > # Initializing list> test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> > # Flatten List to individual elements> # using reduce()> res>=> reduce>(>lambda> x,y: x>+>y, test_list)> > # printing result> print> (>'The List after flattening : '> +> str>(res))> #This code is contributed by Edula Vinay Kumar Reddy>

자바스크립트

>

>

산출:

The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>

시간 복잡도: 에)
보조 공간: 에)

7. groupby를 사용하여 목록 목록을 평면화

가져오기 그룹바이 모듈 itertools . 목록의 test_list를 정의합니다. res 변수를 빈 목록으로 정의합니다. test_list의 요소를 반복하려면 중첩된 for 루프를 사용하세요.

각 요소에 대해 목록인지 아닌지 확인하십시오. 목록인 경우 목록의 각 요소를 반복하여 res 변수에 추가합니다. 목록이 아닌 경우 요소를 res 변수에 직접 추가하세요.

res 변수를 평면화된 목록으로 인쇄합니다.

파이썬3




from> itertools>import> groupby> # Initializing list> test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> # Flatten List to individual elements> # using groupby()> res>=> [i>for> j>in> test_list>for> i>in> (j>if> isinstance>(j,>list>)>else> [j])]> > # printing result> print> (>'The List after flattening : '> +> str>(res))> #This code is contributed by Rayudu.>

>

>

산출:

The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>

시간 복잡도: 코드의 시간 복잡도는 O(n)입니다. 여기서 n은 입력 목록의 요소 수입니다. 중첩 루프는 입력 목록의 각 요소를 정확히 한 번 반복합니다.
공간 복잡도: 코드의 공간 복잡도는 O(n)입니다. 여기서 n은 입력 목록의 요소 수입니다. res 변수는 최대 n개의 요소를 가질 수 있는 평면화된 목록을 저장하는 데 사용됩니다.

자바로 설정

8. itertools.chain.from_iterable()을 사용하여 목록 목록을 평면화

이 예에서 아래 코드는 itertools.chain.from_iterable() 중첩된 목록을 평면화하는 방법입니다.

코드를 분석하고 설명하겠습니다. 아래 코드는 `itertools.chain.from_iterable()`을 사용하여 중첩 목록(`nested_list`)을 단일 목록(`flattered_list`)으로 평면화한 다음 결과를 인쇄합니다.

파이썬3




from> itertools>import> chain> nested_list>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>]]> flattened_list>=> list>(chain.from_iterable(nested_list))> print>(flattened_list)>

>

>

출력 :

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

시간 복잡도: 에)
보조 공간: 에)

9. 재귀를 사용하여 목록의 목록을 평면화

이 예제에서 아래 코드는 중첩 목록을 입력으로 사용하고 개별 요소가 포함된 평면화된 목록을 반환하는 flatten_list 함수를 정의합니다. 평탄화는 다음을 사용하여 달성됩니다. 재귀 .

파이썬3




def> flatten_list(lst):> >flat_list>=> []> >for> item>in> lst:> >if> isinstance>(item,>list>):> >flat_list.extend(flatten_list(item))> >else>:> >flat_list.append(item)> >return> flat_list> nested_list>=> [[>1>,>2>,>3>], [>4>, [>5>,>6>]], [>7>,>8>]]> flattened_list>=> flatten_list(nested_list)> print>(flattened_list)>

>

>

출력 :

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

시간 복잡도: 에)
보조 공간: 에)

우리는 목록 목록을 평면화하는 총 9가지 방법을 다루었습니다. Python의 목록 병합은 중첩된 목록을 단일 목록으로 변환하는 데 사용됩니다. 위의 방법 중 하나를 사용하여 요구 사항에 따라 목록을 평면화할 수 있습니다.

비슷한 읽기:

  • 연결 목록 평면화
  • 연결 목록을 평면화하는 Python 프로그램
  • 파이썬 | 목록의 그룹화된 평면화