Python 목록을 반으로 나누기

Hemank Mehtani 2023년1월30일
  1. 목록 슬라이싱을 사용하여 Python에서 목록을 반으로 나누기
  2. islice() 함수를 사용하여 목록을 하프 파이썬으로 분할
  3. accumulate() 함수를 사용하여 Python에서 목록을 반으로 분할
Python 목록을 반으로 나누기

목록은 특정 인덱스에 요소를 저장하고 변경할 수 있습니다. 즉, 나중에 목록의 값을 업데이트할 수 있습니다.

이 튜토리얼에서 목록을 반으로 나누는 방법을 배웁니다.

목록 슬라이싱을 사용하여 Python에서 목록을 반으로 나누기

목록 슬라이싱은 일부 작업을 위해 목록의 특정 부분을 가져오는 반면 원래 목록은 영향을 받지 않습니다. 즉, 할당된 작업을 수행하기 위해 목록의 복제본을 생성합니다. 이를 위해 Python의 슬라이싱 연산자([:] )가 사용됩니다.

다음 코드에서 목록을 반으로 나눕니다.

lst = ["a", "b", "c", "d", "e", "f"]
print(lst[:3])
print(lst[3:])

출력:

['a', 'b', 'c']
['d', 'e', 'f']

목록을 반으로 나누는 함수를 만들 수도 있습니다. len() 함수를 사용하여 목록의 길이를 찾습니다. 이 값을 반으로 나누고 목록 슬라이싱 방법을 사용하여 반으로 나눕니다.

예를 들어,

def split_list(a_list):
    half = len(a_list) // 2
    return a_list[:half], a_list[half:]


A = ["a", "b", "c", "d", "e", "f"]
B, C = split_list(A)
print(B)
print(C)

출력:

['a', 'b', 'c']
['d', 'e', 'f']

기존 목록의 절반을 두 개 반환하는 split_list 함수를 만들었습니다.

할당된 작업을 수행하기 위해 중복 목록을 생성하므로 원래 목록은 변경되지 않습니다.

islice() 함수를 사용하여 목록을 하프 파이썬으로 분할

Python에서 itertools는 반복자를 효율적으로 처리할 수 있는 내장 모듈입니다.

목록 및 문자열과 같은 iterable을 통해 반복을 매우 쉽게 만듭니다. islice 기능은 itertools 모듈의 일부입니다. 인수로 전달된 반복 가능한 컨테이너에 언급된 값을 선택적으로 인쇄합니다.

예를 들어,

from itertools import islice

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
lst = iter(Input)
Output = [list(islice(lst, elem)) for elem in length_to_split]

print("Initial list:", Input)
print("After splitting", Output)

출력:

Initial list: ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]

accumulate() 함수를 사용하여 Python에서 목록을 반으로 분할

zip() 함수는 iterable의 요소를 결합하는 데 사용됩니다. itertools 모듈의 accumulate() 함수와 함께 사용하여 목록을 반으로 나눌 수 있습니다.

예를 들어,

from itertools import accumulate

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
Output = [
    Input[x - y : x] for x, y in zip(accumulate(length_to_split), length_to_split)
]
print("Initial list :", Input)
print("After splitting", Output)

출력:

Initial list : ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]