logo

파이썬 | 특정 값을 기준으로 목록을 목록으로 분할

Python에서는 특정 값을 기준으로 목록을 하위 목록으로 분할합니다. 아이디어는 지정된 값이 발견될 때마다 원래 목록을 반복하고 요소를 하위 목록으로 그룹화하는 것입니다. 특히 대량의 데이터를 처리할 때 목록을 조작하고 처리해야 하는 경우가 많습니다. 자주 사용되는 작업 중 하나는 특정 값에 따라 목록을 여러 하위 목록으로 나누는 것입니다. 구성 요소를 함께 결합하거나 데이터의 다양한 하위 집합을 분석하려는 경우 이 절차가 도움이 될 수 있습니다.

조건에 따라 목록을 목록으로 분할하는 방법

주어진 조건에 따라 목록을 목록으로 분할하는 데 사용할 수 있는 다양한 방법은 다음과 같습니다.



  • 단순 반복 사용
  • 목록 이해 사용
  • for 루프 사용
  • 재귀 사용
  • Itertools 사용
  • NumPy 사용

반복을 사용하여 Python에서 목록 분할

~ 안에 파이썬 , 다음을 사용하여 특정 값을 기준으로 목록을 목록으로 분할합니다. 단순 반복 . 코드는 목록과 특정 값을 초기화합니다. 그런 다음 목록의 각 요소를 반복하여 특정 값을 기반으로 목록을 하위 목록으로 분할합니다.

파이썬3




test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> print>(>'The original list : '> +> str>(test_list))> particular_value>=> 5> result>=> []> temp_list>=> []> for> i>in> test_list:> >if> i>=>=> particular_value:> >temp_list.append(i)> >result.append(temp_list)> >temp_list>=> []> >else>:> >temp_list.append(i)> result.append(temp_list)> print>(>'The list after splitting by a value : '> +> str>(result))>

>

1차 논리
>

산출

The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>

List Comprehension을 사용하여 Python 목록을 청크로 분할

Python에서는 다음을 사용하여 목록을 특정 값별로 목록으로 분할합니다. 목록 이해 . 이 문제는 두 부분으로 해결될 수 있습니다. 첫 번째 부분에서는 다음을 사용하여 분할을 수행해야 하는 인덱스 목록을 얻습니다. 낱낱이 세다 기능. 그런 다음 다음을 사용하여 인덱스에 따라 값을 결합할 수 있습니다. 지퍼 그리고 리스트 슬라이싱.

파이썬3




test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> print>(>'The original list : '> +> str>(test_list))> # using list comprehension Split list into lists by particular value> size>=> len>(test_list)> idx_list>=> [idx>+> 1> for> idx, val>in> >enumerate>(test_list)>if> val>=>=> 5>]> res>=> [test_list[i: j]>for> i, j>in> >zip>([>0>]>+> idx_list, idx_list>+> >([size]>if> idx_list[>->1>] !>=> size>else> []))]> print>(>'The list after splitting by a value : '> +> str>(res))>

>

>

산출

The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>

For 루프를 사용하여 Python에서 목록 분할

Python에서는 다음을 사용하여 목록을 특정 값별로 목록으로 분할합니다. for 루프 에스. 코드는 원래 목록을 문자열 표현으로 변환하고 특정 가격을 구분 기호(*)로 바꿉니다. 그런 다음 변경된 내용을 분할합니다. 하위 문자열을 얻기 위해 구분 기호를 사용합니다.

파이썬3




test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> print>(>'The original list : '> +> str>(test_list))> x>=> list>(>map>(>str>, test_list))> x>=> ' '>.join(x)> x>=> x.replace(>'5'>,>'5*'>)> y>=> x.split(>'*'>)> res>=> []> for> i>in> y:> >i>=> i.strip()> >i>=> i.split(>' '>)> >b>=> []> >for> j>in> i:> >b.append(>int>(j))> >res.append(b)> print>(>'The list after splitting by a value : '> +> str>(res))>

>

>

산출

The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>

재귀를 사용하여 목록을 여러 목록으로 분할

Python에서는 다음을 사용하여 목록을 특정 값별로 목록으로 분할합니다. 재귀 . 코드는 재귀를 정의합니다 기능 특정 값이 발생할 때마다 주어진 목록을 하위 목록으로 분할하는 Split_list_recursive라고 합니다. 재귀와 두 개의 임시 목록(result 및 temp_list)을 사용하여 결과 하위 목록을 저장합니다.

파이썬3




def> split_list_recursive(test_list, result, temp_list, particular_value):> >if> not> test_list:> >result.append(temp_list)> >return> >if> test_list[>0>]>=>=> particular_value:> >result.append(temp_list>+> [particular_value])> >split_list_recursive(test_list[>1>:], result, [], particular_value)> >else>:> >split_list_recursive(test_list[>1>:],> >result,> >temp_list>+> [test_list[>0>]],> >particular_value)> test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> particular_value>=> 5> result>=> []> print>(>'The original list:'>, test_list)> split_list_recursive(test_list, result, [], particular_value)> print>(>'The list after splitting by value:'>, result)>

>

>

산출

The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by value: [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>

Itertools를 사용하여 Python에서 목록 분할

Python에서는 다음을 사용하여 목록을 특정 값별로 목록으로 분할합니다. itertools . 코드는 목록과 값을 입력으로 사용하는 Split_list라는 함수를 정의합니다. 그것은 itertools.groupby() 연속된 요소를 그룹화하는 함수 목록 주어진 값과 같은지 여부에 따라 결정됩니다.

파이썬3




import> itertools> def> split_list(lst, val):> >return> [>list>(group)>for> k,> >group>in> >itertools.groupby(lst,>lambda> x: x>=>=>val)>if> not> k]> original_lst>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> split_lst>=> split_list(original_lst,>6>)> print>(>'The original list:'>, original_lst)> print>(>'The list after splitting by a value:'>, split_lst)>

>

>

산출

The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value: [[1, 4, 5], [4, 5], [5, 4]]>

NumPy를 사용하여 Python에서 목록 분할

Python에서는 목록을 다음과 같이 분할합니다. 기울기 Numpy를 사용하여 특정 값으로. 코드는 목록과 특정 값을 입력으로 사용합니다. 그런 다음 목록을 다음으로 변환합니다. 넘파이 배열을 사용하여 특정 값이 발생하는 인덱스를 찾습니다.

파이썬3




import> numpy as np> test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> particular_value>=> 5> arr>=> np.array(test_list)> idx>=> np.where(arr>=>=> particular_value)[>0>]> subarrays>=> np.split(arr, idx>+>1>)> result>=> [subarray.tolist()>for> subarray>in> subarrays>if> len>(subarray)>>0>]> print>(>'The original list:'>, test_list)> print>(>'The list after splitting by a value:'>, result)>

문자열 자바 추가
>

>

산출

The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value: [[1, 4, 5], [6, 4, 5], [6, 5], [4]>