ChatGPT가 알려준 리스트를 나누는 방법들을 정리해두고자 한다.
1. 리스트를 특정 크기로 자르기
def split_list_into_chunks(lst, chunk_size):
"""
Split a list into chunks of the specified size.
Parameters:
- lst: The list to be split.
- chunk_size: The size of each chunk.
Returns:
A list of chunks, where each chunk is a sublist of the original list.
"""
return [lst[i:i + chunk_size] for i in range(0, len(lst), chunk_size)]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
result = split_list_into_chunks(my_list, chunk_size)
print(result)
>>>>
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
2. 리스트를 순서대로 같은 원소끼리 묶기
def group_list_by_element(lst):
"""
Group a list by its elements while preserving the order.
Parameters:
- lst: The list to be grouped.
Returns:
A list of tuples where each tuple consists of an element and a list of
elements with the same value, preserving the order.
"""
grouped_list = []
for item in lst:
if not grouped_list or grouped_list[-1][0] != item:
grouped_list.append(([item]))
else:
grouped_list[-1].append(item)
return grouped_list
l = list("aaaaabcdefqhukkkkhh")
group_list_by_element(l)
>>>>
[['a', 'a', 'a', 'a', 'a'],
['b'],
['c'],
['d'],
['e'],
['f'],
['q'],
['h'],
['u'],
['k', 'k', 'k', 'k'],
['h', 'h']]
3. 리스트를 전체 개수가 N개가 되면서 동일한 크기로 자르기
import math
def divide_list(lst, n):
# 각 부분 리스트의 길이 계산 (올림 사용)
size = math.ceil(len(lst) / n)
# 각 부분으로 나누어진 리스트를 저장할 리스트
divided = []
# 리스트를 n개의 부분으로 나눔
for i in range(0, len(lst), size):
divided.append(lst[i:i + size])
# 나누어진 리스트 반환
return divided
# 예시 리스트
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 리스트를 총 3개의 부분으로 나눔
divided_list = divide_list(my_list, 3)
print(divided_list)
>>>>
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
728x90
'python 메모' 카테고리의 다른 글
[sqlite] cx.read_sql, pd.read_sql 속도비교 (0) | 2024.03.03 |
---|---|
[matplotlib] 여러개의 다른 y축 그래프를 한 그래프에 그리기 (1) | 2024.02.11 |
[regex] 정규표현식 메모용 (0) | 2023.12.18 |
[websocket] 연결이 끊겼을 때 reconnect를 위한 방법들 (0) | 2023.12.16 |
[GPU] pynvml 모듈로 gpu 사용량 체크하기 (0) | 2023.12.09 |