Con trăn |

Một danh sách có thể được phân chia dựa trên kích thước của đoạn được xác định. Tách danh sách thành n phần trả về danh sách n danh sách chứa số phần tử danh sách bằng nhau

Nếu số lượng danh sách, n, không chia đều cho độ dài của danh sách được chia, thì một số danh sách sẽ có nhiều phần tử hơn các danh sách khác

Tách danh sách Python

4 cách dễ dàng để tách danh sách trong Python

  1. Sử dụng len(). Phương thức len() trả về độ dài của danh sách và sau đó sử dụng phép chia sàn
  2. Sử dụng hiểu danh sách. Chia danh sách thành nhiều phần và cung cấp N để hiểu danh sách
  3. Sử dụng vòng lặp. Sử dụng vòng lặp for để chia danh sách thành các phần khác nhau
  4. Sử dụng mảng_split() gọn gàng. Nó cho phép bạn chia một mảng thành một số mảng đã đặt

Phương pháp 1. Sử dụng phương thức len()

Để tách một danh sách trong Python, hãy sử dụng phương thức len() với iterable dưới dạng danh sách để tìm độ dài của nó và sau đó chia sàn độ dài cho 2 bằng cách sử dụng toán tử // để tìm middle_index của danh sách

list = [11, 18, 19, 21]

length = len(list)

middle_index = length // 2

first_half = list[:middle_index]
second_half = list[middle_index:]

print(first_half)
print(second_half)

đầu ra

[11, 18]
[19, 21]

Như bạn có thể thấy từ đầu ra, chúng tôi chia danh sách thành một nửa chính xác. Chúng tôi đã sử dụng toán tử dấu hai chấm (. ) để truy cập vào nửa đầu và nửa sau của danh sách chia

Cách chia danh sách thành n phần trong Python

Để chia danh sách thành n phần trong Python, hãy sử dụng numpy. hàm array_split()

các np. split() chia mảng thành nhiều mảng con

Phương thức numpy array_split() trả về danh sách n mảng Numpy, mỗi mảng chứa số phần tử xấp xỉ bằng nhau từ danh sách

import numpy as np

listA = [11, 18, 19, 21, 29, 46]

splits = np.array_split(listA, 3)

for array in splits:
    print(list(array))

đầu ra

[11, 18]
[19, 21]
[29, 46]

Trong ví dụ này, chúng tôi chia danh sách thành 3 phần

Tách một danh sách thành các phần tử N phần tử chẵn trong Python

Một danh sách có thể được phân chia dựa trên kích thước của đoạn được xác định. Điều này có nghĩa là chúng ta có thể xác định kích thước của chunk

Nếu tập hợp con của danh sách không vừa với kích thước của đoạn đã xác định, bộ đệm cần được chèn vào vị trí của phần tử trống

Do đó, chúng tôi sẽ sử dụng Không làm bộ lọc để lấp đầy các phần tử trống đó

def list_split(listA, n):
    for x in range(0, len(listA), n):
        every_chunk = listA[x: n+x]

        if len(every_chunk) < n:
            every_chunk = every_chunk + \
                [None for y in range(n-len(every_chunk))]
        yield every_chunk


print(list(list_split([11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 111, 112, 113], 7)))

đầu ra

[[11, 21, 31, 41, 51, 61, 71], [81, 91, 101, 111, 112, 113, None]]

Danh sách đã được chia thành các phần bằng nhau gồm 7 phần tử mỗi phần

Hàm list_split() ở trên nhận các đối số. listA cho danh sách và chunk_size cho một số được chia theo. Sau đó, hàm lặp qua danh sách với số lượng khối tăng dần n

Mỗi đoạn dự kiến ​​​​sẽ có kích thước được đưa ra làm đối số. Nếu không có đủ phần tử để chia cùng kích thước, các phần tử còn lại không sử dụng được điền vào Không có

Phương pháp 2. Sử dụng hiểu danh sách

Sử dụng khả năng hiểu danh sách, chúng ta có thể tách một danh sách gốc và tạo các khối. Để chia danh sách thành nhiều phần, hãy cung cấp N cho cú pháp hiểu danh sách và nó sẽ tạo một danh sách mới với N phần tử

main_list = [11, 21, 46, 19]

split_size = 3
splitted_list = [main_list[i:i+split_size] for i in range(0, len(main_list), split_size)]

print(splitted_list)

đầu ra

[[11, 21, 46], [19]]

Bạn có thể thấy rằng chúng tôi chia danh sách thành các phần gồm 3 phần tử. Bạn có thể chia danh sách thành các phần có 2 phần tử hoặc bốn phần tử. Vượt qua split_size, là N trong trường hợp của chúng tôi

Phương pháp 3. Sử dụng vòng lặp

Sử dụng vòng lặp for để chia danh sách thành các phần khác nhau. Xác định kích thước khối của danh sách và nó sẽ tạo danh sách các khối có kích thước chính xác đó

________số 8_______

đầu ra

[[11, 21], [46, 19]]

Phương pháp 4. Sử dụng mảng_split() gọn gàng

các np. array_split() là một chức năng thư viện gọn gàng chia danh sách thành nhiều phần. Nó cho phép bạn chia một mảng thành một số mảng đã đặt

[11, 18]
[19, 21]
0

đầu ra

[[11, 21], [46, 19]]

Câu hỏi thường gặp

Làm cách nào để chia danh sách thành nhiều danh sách trong Python?

Sử dụng cắt danh sách để chia danh sách thành nhiều danh sách

[11, 18]
[19, 21]
2

đầu ra

[11, 18]
[19, 21]
3

Làm cách nào để chia danh sách thành một số danh sách con cụ thể trong Python?

Sử dụng cắt danh sách kết hợp với hàm range() để chia danh sách thành một số danh sách con cụ thể

[11, 18]
[19, 21]
4

đầu ra

[11, 18]
[19, 21]
5

Phần kết luận

Để chia độ dài của danh sách trong Python, bạn có thể sử dụng hàm len() tích hợp kết hợp với floor chia độ dài cho 2 bằng cách sử dụng toán tử // để tìm middle_index của danh sách

Ngoài cách tiếp cận hàm len(), bạn cũng có thể sử dụng vòng lặp for, hiểu danh sách hoặc hàm array_split() numpy

Làm cách nào để chia danh sách thành danh sách con Python dựa trên giá trị?

6 câu trả lời .
Sử dụng itertools. nhómby() ; . từ itertools nhập groupby grouped = [list(g) for k, g in groupby(L, lambda s. S. phân vùng ('_')[0])].
Sử dụng từ điển để nhóm các mục theo tiền tố chung

Cách tách một danh sách trong Python?

Phương thức tách chuỗi Python() . Bạn có thể chỉ định dấu phân cách, dấu phân cách mặc định là bất kỳ khoảng trắng nào. Ghi chú. Khi maxsplit được chỉ định, danh sách sẽ chứa số phần tử đã chỉ định cộng với một. The split() method splits a string into a list. You can specify the separator, default separator is any whitespace. Note: When maxsplit is specified, the list will contain the specified number of elements plus one.

Bạn có thể sử dụng split() trên danh sách không?

Có thể sử dụng hàm tách để tách chuỗi với sự trợ giúp của dấu phân cách. Một chức năng tách có thể được sử dụng để tách các chuỗi với sự trợ giúp của sự xuất hiện của một ký tự. Có thể sử dụng hàm tách để tách các chuỗi ở dạng danh sách .

Làm cách nào để tách mảng trong Python?

Sử dụng phương thức array_split(), nhập mảng bạn muốn chia và số lần chia bạn muốn thực hiện .