728x90
반응형
이번에는 리스트를 스플릿, 즉 쪼개어 작은 크기의 새로운 리스트로 만들고
만들어진 새로운 리스트들을 다시 리스트에 저장하여 반환하는 예제를 구현해본다
예를 들어 다음과 같다
x = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
위와 같은 배열이 존재하고, 인자로 3을 넣어주면

위와 같이 반환되고, 인자로 5를 넣어주면

위와 같은 형태로 반환되도록 한다
1) enumerate를 사용한 시퀀스 자료구조의 인덱스 / 값 접근
def makeListInList(target, num):
ret = []
for idx, value in enumerate(target):
if idx % num == 0:
ret.append(list(target[idx : idx + num]))
return ret
print(makeListInList(x, 5))
첫 번째 예제는 위와 같다
인자로 쪼개어 저장할 리스트과 쪼개질 리스트의 크기를 받는다
enumerate를 사용하여 인자로 받은 리스트의 인덱스와 값에 접근하고
접근한 리스트의 인덱스가 저장할 리스트의 크기의 배수라면, 리스트를 쪼개어 저장해야 하므로
슬라이싱을 통해 쪼개고 지역 리스트인 ret에 append하여 저장한다
최종 실행 결과는 다음과 같다

2) 위의 로직을 리스트 컨프리헨션으로 개선
def makeListInList2(target, num):
return [list(target[idx : idx + num]) for idx, value in enumerate(target) if idx % num == 0]
print(makeListInList2(x, 3))
위 로직의 문제점은 함수에서 불필요한 지역 변수를 사용한다는 점이다
따라서 리스트 컴프리헨션을 통해 이를 개선한다
다음의 구조로 리스트 컴프리헨션을 작성하였다
리스트에 저장할 값 for 순회중인 요소 in 순회대상 if 조건문
위와 같이 한줄로 작성한 후 리턴함으로서 불필요한 지역 변수를 생략하였다
최종 실행 결과는 다음과 같다

728x90
반응형
'Python > 45가지 파이썬 기초문법 예제' 카테고리의 다른 글
| 파이썬 (27) 멀티 파일 읽기 (0) | 2025.05.13 |
|---|---|
| 파이썬 (26) 파일 쓰기 (0) | 2025.05.13 |
| 파이썬 (24) 병렬 처리 (0) | 2025.05.10 |
| 파이썬 (23) 알파벳 쓰기 (0) | 2025.05.10 |
| 파이썬 (22) 문자열 파싱2 (0) | 2025.05.10 |