Từ khóa năng suất cho phép một chức năng quay lại nơi nó dừng lại khi nó được gọi lại. Đây là sự khác biệt quan trọng từ một chức năng thông thường. Một chức năng thông thường không thể quay lại nơi nó dừng lại. Từ khóa suất giúp hàm ghi nhớ trạng thái của nó. Năng suất cho phép một chức năng tạm dừng và tiếp tục trong khi nó chuyển sang một giá trị tại thời điểm tạm dừng thực thi.
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]53
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]55_______00
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]2
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]0
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]6
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]8
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]11
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]13
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]15
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]17
[1, 2, 3] [4, 5, 6] [7, 8, 9]18
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]00
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
________ 206 ________ 207
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]00
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]07
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]09
[1, 2, 3] [4, 5, 6] [7, 8, 9]00
[1, 2, 3] [4, 5, 6] [7, 8, 9]01
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]07
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]90
[1, 2, 3] [4, 5, 6] [7, 8, 9]91
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]93
[1, 2, 3] [4, 5, 6] [7, 8, 9]94
[1, 2, 3] [4, 5, 6] [7, 8, 9]95
[1, 2, 3] [4, 5, 6] [7, 8, 9]96
đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]5
Phương pháp 2. Chia danh sách thành các phần có kích thước N trong Python bằng vòng lặp
Trong ví dụ này, chúng tôi đang sử dụng một vòng lặp trong python và cắt danh sách sẽ giúp chúng tôi chia danh sách thành nhiều phần
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]53
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]55_______2530
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]532
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]534
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]536
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]90
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]8
[1, 2, 3] [4, 5, 6] [7, 8, 9]541
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]543
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]545
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]547
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]549
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]07
[1, 2, 3] [4, 5, 6] [7, 8, 9]552
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]09____2555
[1, 2, 3] [4, 5, 6] [7, 8, 9]556
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]534
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]91____254
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]95
[1, 2, 3] [4, 5, 6] [7, 8, 9]10
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]12
đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]
Phương pháp 2. Chia danh sách thành các phần có kích thước N bằng Python bằng cách sử dụng Khả năng hiểu danh sách
Đó là một cách hay để chia danh sách thành một dòng mã để chia danh sách thành nhiều danh sách trong Python
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]53
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]55_______2530
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]532
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]534
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]536
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]90
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]26
[1, 2, 3] [4, 5, 6] [7, 8, 9]541
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]543
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]545
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]547
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]07
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]536
[1, 2, 3] [4, 5, 6] [7, 8, 9]40
[1, 2, 3] [4, 5, 6] [7, 8, 9]41
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]43
[1, 2, 3] [4, 5, 6] [7, 8, 9]44
[1, 2, 3] [4, 5, 6] [7, 8, 9]45
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]530
[1, 2, 3] [4, 5, 6] [7, 8, 9]48
[1, 2, 3] [4, 5, 6] [7, 8, 9]44
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]55
[1, 2, 3] [4, 5, 6] [7, 8, 9]09
[1, 2, 3] [4, 5, 6] [7, 8, 9]555
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]60
[1, 2, 3] [4, 5, 6] [7, 8, 9]530
[1, 2, 3] [4, 5, 6] [7, 8, 9]48
[1, 2, 3] [4, 5, 6] [7, 8, 9]63
[1, 2, 3] [4, 5, 6] [7, 8, 9]63
[1, 2, 3] [4, 5, 6] [7, 8, 9]65
[1, 2, 3] [4, 5, 6] [7, 8, 9]95
[1, 2, 3] [4, 5, 6] [7, 8, 9]67
đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
Thực hiện thay thế.
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]68
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]55
[1, 2, 3] [4, 5, 6] [7, 8, 9]530
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]532
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]534
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]536
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]90
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]541
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]543
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]545
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]547
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]89
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]07
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]536
[1, 2, 3] [4, 5, 6] [7, 8, 9]89
[1, 2, 3] [4, 5, 6] [7, 8, 9]40
[1, 2, 3] [4, 5, 6] [7, 8, 9]91
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]99
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]07
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]09
[1, 2, 3] [4, 5, 6] [7, 8, 9]110
________ 495 ________ 496
đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]0
Phương pháp 3. Chia danh sách thành các phần có kích thước N bằng Python bằng Numpy
Ở đây, chúng tôi đang sử dụng một Numpy. array_split, chia mảng thành n phần có kích thước bằng nhau
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]113
[1, 2, 3] [4, 5, 6] [7, 8, 9]114
[1, 2, 3] [4, 5, 6] [7, 8, 9]115
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]119
[1, 2, 3] [4, 5, 6] [7, 8, 9]48
[1, 2, 3] [4, 5, 6] [7, 8, 9]121
[1, 2, 3] [4, 5, 6] [7, 8, 9]541
[1, 2, 3] [4, 5, 6] [7, 8, 9]48
đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]0
Phương pháp 5. Chia danh sách thành các khối có kích thước N bằng Python bằng itertool
Trong ví dụ này, chúng tôi sẽ sử dụng itertool để cắt từng mảng có kích thước bằng nhau. chúng tôi đang chuyển một tham số trong phạm vi 30 và kích thước phân chia là 5
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]124
[1, 2, 3] [4, 5, 6] [7, 8, 9]125
[1, 2, 3] [4, 5, 6] [7, 8, 9]113
[1, 2, 3] [4, 5, 6] [7, 8, 9]127
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]129
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]131____254
[1, 2, 3] [4, 5, 6] [7, 8, 9]133
[1, 2, 3] [4, 5, 6] [7, 8, 9]134
[1, 2, 3] [4, 5, 6] [7, 8, 9]08
[1, 2, 3] [4, 5, 6] [7, 8, 9]136
[1, 2, 3] [4, 5, 6] [7, 8, 9]133
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]139
[1, 2, 3] [4, 5, 6] [7, 8, 9]140
[1, 2, 3] [4, 5, 6] [7, 8, 9]141
[1, 2, 3] [4, 5, 6] [7, 8, 9]142
[1, 2, 3] [4, 5, 6] [7, 8, 9]93____1144
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]119
[1, 2, 3] [4, 5, 6] [7, 8, 9]148
[1, 2, 3] [4, 5, 6] [7, 8, 9]90
[1, 2, 3] [4, 5, 6] [7, 8, 9]150
đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]0
Phương pháp 5. bộ sưu tập
Một cách tiếp cận để chia danh sách thành các phần có kích thước N mà không cần sử dụng vòng lặp là sử dụng mô-đun bộ sưu tập. Mô-đun bộ sưu tập có một lớp deque cho phép bạn dễ dàng chia danh sách thành các phần có kích thước cụ thể
Đây là một ví dụ về cách bạn có thể sử dụng lớp deque để chia danh sách thành các phần có kích thước N
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]124
[1, 2, 3] [4, 5, 6] [7, 8, 9]152____1113
[1, 2, 3] [4, 5, 6] [7, 8, 9]154
[1, 2, 3] [4, 5, 6] [7, 8, 9]06
[1, 2, 3] [4, 5, 6] [7, 8, 9]156
[1, 2, 3] [4, 5, 6] [7, 8, 9]157
[1, 2, 3] [4, 5, 6] [7, 8, 9]158
[1, 2, 3] [4, 5, 6] [7, 8, 9]157
[1, 2, 3] [4, 5, 6] [7, 8, 9]160____254
[1, 2, 3] [4, 5, 6] [7, 8, 9]162
[1, 2, 3] [4, 5, 6] [7, 8, 9]157
[1, 2, 3] [4, 5, 6] [7, 8, 9]164
[1, 2, 3] [4, 5, 6] [7, 8, 9]157
[1, 2, 3] [4, 5, 6] [7, 8, 9]166
[1, 2, 3] [4, 5, 6] [7, 8, 9]167
[1, 2, 3] [4, 5, 6] [7, 8, 9]168
[1, 2, 3] [4, 5, 6] [7, 8, 9]169
[1, 2, 3] [4, 5, 6] [7, 8, 9]168
[1, 2, 3] [4, 5, 6] [7, 8, 9]171
[1, 2, 3] [4, 5, 6] [7, 8, 9]168
[1, 2, 3] [4, 5, 6] [7, 8, 9]173
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]175
[1, 2, 3] [4, 5, 6] [7, 8, 9]168
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]178
[1, 2, 3] [4, 5, 6] [7, 8, 9]04
[1, 2, 3] [4, 5, 6] [7, 8, 9]05
[1, 2, 3] [4, 5, 6] [7, 8, 9]181
[1, 2, 3] [4, 5, 6] [7, 8, 9]01
[1, 2, 3] [4, 5, 6] [7, 8, 9]183
[1, 2, 3] [4, 5, 6] [7, 8, 9]167
[1, 2, 3] [4, 5, 6] [7, 8, 9]185
[1, 2, 3] [4, 5, 6] [7, 8, 9]186
[1, 2, 3] [4, 5, 6] [7, 8, 9]01
[1, 2, 3] [4, 5, 6] [7, 8, 9]168
[1, 2, 3] [4, 5, 6] [7, 8, 9]189
[1, 2, 3] [4, 5, 6] [7, 8, 9]168
[1, 2, 3] [4, 5, 6] [7, 8, 9]02
[1, 2, 3] [4, 5, 6] [7, 8, 9]173
[1, 2, 3] [4, 5, 6] [7, 8, 9]193
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]55_______2530
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]532
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]534
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]536
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]90
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]541
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]543
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]545
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]547
[1, 2, 3] [4, 5, 6] [7, 8, 9]1
[1, 2, 3] [4, 5, 6] [7, 8, 9]014
[1, 2, 3] [4, 5, 6] [7, 8, 9]03
[1, 2, 3] [4, 5, 6] [7, 8, 9]016
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]534
[1, 2, 3] [4, 5, 6] [7, 8, 9]019
[1, 2, 3] [4, 5, 6] [7, 8, 9]54
[1, 2, 3] [4, 5, 6] [7, 8, 9]93
[1, 2, 3] [4, 5, 6] [7, 8, 9]022
[1, 2, 3] [4, 5, 6] [7, 8, 9]95
[1, 2, 3] [4, 5, 6] [7, 8, 9]024______2025
Đầu ra
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
Lớp deque cho phép bạn dễ dàng loại bỏ các phần tử từ bên trái hoặc bên phải của danh sách, giúp dễ dàng chia danh sách thành các phần có kích thước cụ thể. Mã này sử dụng vòng lặp while và hàm tạo để lặp lại danh sách và tạo ra từng đoạn một. Vòng lặp bị ngắt khi deque trống, điều này cho biết rằng tất cả các phần tử đã được xử lý
Cách tiếp cận này có độ phức tạp thời gian là O[n] và độ phức tạp không gian là O[n], trong đó n là kích thước của danh sách đầu vào