Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chia danh sách thành các khối kích thước N trong Python

Ở đây chúng ta sẽ có một danh sách đầu vào của người dùng cho trước và một kích thước chia cho trước. Và nhiệm vụ của chúng ta là chia danh sách theo kích thước cho trước.

Phương pháp 1

Ở đây chúng ta áp dụng từ khóa yield nó cho phép một hàm nơi nó dừng lại rồi lại được gọi, đây là khác biệt chính với hàm thông thường.

Mã ví dụ

A = list()
n = int(input("Enter the size of the List"))
print("Enter the number")
for i in range(int(n)):
    p = int(input("Size="))
    A.append(int(p))
print(A)

def list_chunks(l, n):
    for i in range(0, len(l), n):
        yield l[i:i + n]

n = int(input("Enter Chunk Size"))
my_list = list(list_chunks(A, n))
print("List of Chunks", my_list)

Đầu ra

Enter the size of the List 6
Enter the number
Size= 12
[12]
Size= 33
[12, 33]
Size= 11
[12, 33, 11]
Size= 56
[12, 33, 11, 56]
Size= 44
[12, 33, 11, 56, 44]
Size= 89
[12, 33, 11, 56, 44, 89]
Enter Chunk Size 3
List of Chunks [[12, 33, 11], [56, 44, 89]]

Phương pháp 2

Sử dụng List comprehension chúng ta có thể giải quyết vấn đề này trong một dòng.

Mã ví dụ

A = list()
n = int(input("Enter the size of the List"))
print("Enter the number")
for i in range(int(n)):
    p = int(input("Size="))
    A.append(int(p))
print(A)

n = int(input("Enter Chunk Size"))
my_final = [A[i * n:(i + 1) * n] for i in range((len(A) + n - 1) // n)]
print("List of chunks:", my_final)

Đầu ra

Enter the size of the List 6
Enter the number
Size= 23
[23]
Size= 34
[23, 34]
Size= 12
[23, 34, 12]
Size= 56
[23, 34, 12, 56]
Size= 33
[23, 34, 12, 56, 33]
Size= 22
[23, 34, 12, 56, 33, 22]
Enter Chunk Size 3
List of chunks: [[23, 34, 12], [56, 33, 22]]