Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
Việc chia tách danh sách là tiện ích khá phổ biến hiện nay và có thể có nhiều ứng dụng và trường hợp sử dụng giống nhau. Cùng với những điều này luôn luôn đến các biến thể. Một biến thể như vậy có thể được chia danh sách theo giá trị cụ thể. Hãy để thảo luận về một cách nhất định trong đó phân chia danh sách có thể được thực hiện.
Phương pháp: Sử dụng danh sách hiểu + zip[] + slicing + enumerate[]
Vấn đề này có thể được giải quyết trong hai phần, trong phần đầu tiên, chúng tôi nhận được danh sách chỉ mục bằng cách phân chia phải được thực hiện bằng cách sử dụng hàm liệt kê. Và sau đó chúng ta có thể tham gia các giá trị theo các chỉ số bằng cách sử dụng ZIP và Danh sách cắt.
test_list
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]0
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]1
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]3
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]5__12
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]0
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]1
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]2
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]3
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]4
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]5
=
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]7
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]8
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]9
=
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]1
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]1
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]4
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]5
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]6
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]7
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]8
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]9
[array[[0, 1, 2, 3, 4]], array[[5, 6, 7, 8, 9]], array[[10, 11, 12, 13, 14]], array[[15, 16, 17, 18, 19]], array[[20, 21, 22, 23, 24]], array[[25, 26, 27, 28, 29]]]0
[array[[0, 1, 2, 3, 4]], array[[5, 6, 7, 8, 9]], array[[10, 11, 12, 13, 14]], array[[15, 16, 17, 18, 19]], array[[20, 21, 22, 23, 24]], array[[25, 26, 27, 28, 29]]]1
=
____9 [['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]5
[1, 2, 3] [4, 5, 6] [7, 8, 9]8
[array[[0, 1, 2, 3, 4]], array[[5, 6, 7, 8, 9]], array[[10, 11, 12, 13, 14]], array[[15, 16, 17, 18, 19]], array[[20, 21, 22, 23, 24]], array[[25, 26, 27, 28, 29]]]6
=
[array[[0, 1, 2, 3, 4]], array[[5, 6, 7, 8, 9]], array[[10, 11, 12, 13, 14]], array[[15, 16, 17, 18, 19]], array[[20, 21, 22, 23, 24]], array[[25, 26, 27, 28, 29]]]8
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]4
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]0
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]6
Các
[[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29]]
2zip[] + slicing + enumerate[]
1[array[[0, 1, 2, 3, 4]],
array[[5, 6, 7, 8, 9]],
array[[10, 11, 12, 13, 14]],
array[[15, 16, 17, 18, 19]],
array[[20, 21, 22, 23, 24]],
array[[25, 26, 27, 28, 29]]]
0 zip[] + slicing + enumerate[]
3__
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]
Trong bài viết này, chúng tôi sẽ đề cập đến cách chúng tôi chia một danh sách thành các khối có kích thước đồng đều trong Python.
Dưới đây là các phương pháp mà chúng tôi sẽ đề cập: & nbsp;
- Sử dụng năng suất
- Sử dụng cho vòng lặp trong Python
- Sử dụng danh sách hiểu
- Sử dụng Numpy
- Sử dụng itertool
Phương pháp 1: Chia một danh sách thành các khối có kích thước n trong Python bằng cách sử dụng từ khóa năng suấtyield keyword
Từ khóa năng suất cho phép một chức năng quay lại nơi nó rời đ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 trở lại nơi nó rời đi. Từ khóa năng suất giúp một chức năng ghi nhớ trạng thái của nó. Năng suất cho phép một chức năng đình chỉ và tiếp tục trong khi nó biến một giá trị tại thời điểm đình chỉ thực thi. & NBSP;
Python3
test_list
7=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]0
=
0[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
=
2__12=
8=
9=
7
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]01
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]03
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]05
=
7
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]07
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]08
=
7[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]10
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]12
[1, 2, 3] [4, 5, 6] [7, 8, 9]8
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]14
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]15
Is
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]27
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]28
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]30
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]31
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]5
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]34
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]36
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]37
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]39
Output:
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]
Phương pháp 2: Chia một danh sách thành các khối có kích thước N trong Python bằng cách sử dụng một 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à Danh sách cắt sẽ giúp chúng tôi phá vỡ danh sách thành các khối.
Python3
test_list
7=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]0
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]1
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]45__12
=
8
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]7
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]56
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]58
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]60
[1, 2, 3] [4, 5, 6] [7, 8, 9]8
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]62
=
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]5
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]65
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]67
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]68
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]47
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]4
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]18
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]6
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]20
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]75
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]16
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]34
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]79
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]16
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]82
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]84
Output:
[1, 2, 3] [4, 5, 6] [7, 8, 9]
Phương pháp 2: Chia một danh sách thành các khối có kích thước n trong Python bằng cách sử dụng danh sách hiểu & nbsp; List comprehension
Đó là một cách thanh lịch để chia một danh sách thành một dòng mã để chia danh sách thành nhiều danh sách trong Python.split a list into multiple lists in Python.
Python3
test_list
7=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]0
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]1
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]45__12
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]98
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]7
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]56
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]58
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]2
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]60
[1, 2, 3] [4, 5, 6] [7, 8, 9]8
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]31
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]3
[1, 2, 3] [4, 5, 6] [7, 8, 9]10
=
[1, 2, 3] [4, 5, 6] [7, 8, 9]12
[1, 2, 3] [4, 5, 6] [7, 8, 9]13
[1, 2, 3] [4, 5, 6] [7, 8, 9]14
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]2
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
[1, 2, 3] [4, 5, 6] [7, 8, 9]36
Output:
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]
Thực hiện thay thế: & NBSP;
Python3
Các
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]31
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]3
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]34
=
[1, 2, 3] [4, 5, 6] [7, 8, 9]63
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]2
[1, 2, 3] [4, 5, 6] [7, 8, 9]19__
[1, 2, 3] [4, 5, 6] [7, 8, 9]9
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]39
Output:
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]
Phương pháp 3: Chia một danh sách thành các khối có kích thước N trong Python bằng cách sử dụng Numpy
Ở đây, chúng tôi đang sử dụng Numpy.Array_Split, phân chia mảng thành các khối N có kích thước bằng nhau.
Python3
[1, 2, 3] [4, 5, 6] [7, 8, 9]77
[1, 2, 3] [4, 5, 6] [7, 8, 9]78
[1, 2, 3] [4, 5, 6] [7, 8, 9]79
=
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]20
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]0
[1, 2, 3] [4, 5, 6] [7, 8, 9]83
[1, 2, 3] [4, 5, 6] [7, 8, 9]84
[1, 2, 3] [4, 5, 6] [7, 8, 9]85
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]7
[1, 2, 3] [4, 5, 6] [7, 8, 9]84
Output:
[array[[0, 1, 2, 3, 4]], array[[5, 6, 7, 8, 9]], array[[10, 11, 12, 13, 14]], array[[15, 16, 17, 18, 19]], array[[20, 21, 22, 23, 24]], array[[25, 26, 27, 28, 29]]]
Phương pháp 5: Chia một danh sách thành các khối có kích thước N trong Python bằng Itertool
Trong ví dụ này, chúng tôi sẽ sử dụng itertool để cắt từng mảng với kích thước bằng nhau. Chúng tôi đang vượt qua 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]88
[1, 2, 3] [4, 5, 6] [7, 8, 9]89
[1, 2, 3] [4, 5, 6] [7, 8, 9]77
[1, 2, 3] [4, 5, 6] [7, 8, 9]91
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]14
[1, 2, 3] [4, 5, 6] [7, 8, 9]93
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]16
[1, 2, 3] [4, 5, 6] [7, 8, 9]95
=
[1, 2, 3] [4, 5, 6] [7, 8, 9]97
[1, 2, 3] [4, 5, 6] [7, 8, 9]98
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]16
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]00
[1, 2, 3] [4, 5, 6] [7, 8, 9]97
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]0
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]03
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]04____
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]05
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]06
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]36
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]08
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]20
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]0
[1, 2, 3] [4, 5, 6] [7, 8, 9]83
[[1, 2, 3, 4], [5, 6, 7, 8], [9]] Auxiliary Space: O[1]12
Output:
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]