Cách tốt nhất để chia một danh sách thành các phần gần bằng nhau là gì? Ví dụ: nếu danh sách có 7 phần tử và được chia thành 2 phần, chúng tôi muốn nhận 3 phần tử trong một phần và phần còn lại phải có 4 phần tử.
Tôi đang tìm kiếm một cái gì đó như thế even_split(L, n)
vỡ L
thành n
nhiều phần.
def chunks(L, n):
""" Yield successive n-sized chunks from L.
"""
for i in range(0, len(L), n):
yield L[i:i+n]
Đoạn mã trên cho các khối 3, thay vì 3 khối. Tôi có thể chuyển đổi đơn giản (lặp lại phần này và lấy phần tử đầu tiên của mỗi cột, gọi phần đó, sau đó lấy phần thứ hai và đặt nó vào phần hai, v.v.), nhưng điều đó phá hủy thứ tự của các mục.
>>> chunkIt(range(8), 6)
=>[[0], [1], [2, 3], [4], [5], [6], [7]]