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
- 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
- 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
- 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
- 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