Hướng dẫn python split list by condition - Danh sách phân chia Python theo điều kiện

Lấy cảm hứng từ câu trả lời tuyệt vời của @gnibbler [nhưng terse!], Chúng tôi có thể áp dụng phương pháp đó để bản đồ vào nhiều phân vùng:

from collections import defaultdict

def splitter[l, mapper]:
    """Split an iterable into multiple partitions generated by a callable mapper."""

    results = defaultdict[list]

    for x in l:
        results[mapper[x]] += [x]

    return results

Sau đó, splitter sau đó có thể được sử dụng như sau:

>>> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3]
>>> split = splitter[l, lambda x: x % 2 == 0]  # partition l into odds and evens
>>> split.items[]
>>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]

Điều này hoạt động cho hơn hai phân vùng với ánh xạ phức tạp hơn [và trên các trình lặp cũng vậy]:

>>> import math
>>> l = xrange[1, 23]
>>> split = splitter[l, lambda x: int[math.log10[x] * 5]]
>>> split.items[]
[[0, [1]],
 [1, [2]],
 [2, [3]],
 [3, [4, 5, 6]],
 [4, [7, 8, 9]],
 [5, [10, 11, 12, 13, 14, 15]],
 [6, [16, 17, 18, 19, 20, 21, 22]]]

Hoặc sử dụng từ điển để lập bản đồ:

>>> map = {'A': 1, 'X': 2, 'B': 3, 'Y': 1, 'C': 2, 'Z': 3}
>>> l = ['A', 'B', 'C', 'C', 'X', 'Y', 'Z', 'A', 'Z']
>>> split = splitter[l, map.get]
>>> split.items[]
[1, ['A', 'Y', 'A']], [2, ['C', 'C', 'X']], [3, ['B', 'Z', 'Z']]]

Chia danh sách dựa trên điều kiện trong Python #

Để phân chia danh sách dựa trên một điều kiện:

  1. Khai báo hai biến mới và khởi tạo chúng vào danh sách trống.
  2. Sử dụng vòng lặp for để lặp qua danh sách ban đầu.
  3. Kiểm tra xem mỗi mục có đáp ứng một điều kiện không.
  4. Nối các mục đáp ứng điều kiện vào một danh sách và các mục không vào cái kia.

Copied!

my_list = [1, 21, 3, 7, 14, 28, 35] lte_10 = [] gte_10 = [] for item in my_list: if item >> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3] >>> split = splitter[l, lambda x: x % 2 == 0] # partition l into odds and evens >>> split.items[] >>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
0 không.

Nếu điều kiện được đáp ứng, chúng tôi nối các mục vào danh sách

>>> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3]
>>> split = splitter[l, lambda x: x % 2 == 0]  # partition l into odds and evens
>>> split.items[]
>>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
1, nếu không, chúng tôi nối các mục vào
>>> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3]
>>> split = splitter[l, lambda x: x % 2 == 0]  # partition l into odds and evens
>>> split.items[]
>>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
2.

Bạn cũng có thể sử dụng mệnh đề

>>> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3]
>>> split = splitter[l, lambda x: x % 2 == 0]  # partition l into odds and evens
>>> split.items[]
>>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
3 nếu bạn phải.

Copied!

my_list = [1, 21, 3, 7, 14, 19, 28, 35] lte_10 = [] gte_10 = [] between_10_and_20 = [] for item in my_list: if item 10 and item >> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3] >>> split = splitter[l, lambda x: x % 2 == 0] # partition l into odds and evens >>> split.items[] >>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
3 kiểm tra xem mục hiện tại có lớn hơn
>>> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3]
>>> split = splitter[l, lambda x: x % 2 == 0]  # partition l into odds and evens
>>> split.items[]
>>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
0 và nhỏ hơn
>>> l = [1, 2, 3, 4, 2, 3, 4, 5, 6, 4, 3, 2, 3]
>>> split = splitter[l, lambda x: x % 2 == 0]  # partition l into odds and evens
>>> split.items[]
>>> [[False, [1, 3, 3, 5, 3, 3]], [True, [2, 4, 2, 4, 6, 4, 2]]]
6.

Nếu điều kiện được đáp ứng, chúng tôi nối giá trị vào danh sách thứ ba.

Ngoài ra, bạn có thể sử dụng một danh sách hiểu.

Chia danh sách dựa trên một điều kiện bằng cách sử dụng danh sách hiểu #

Để phân chia danh sách dựa trên một điều kiện:

  1. Sử dụng danh sách hiểu để lặp lại trong danh sách.
  2. Kiểm tra xem mỗi mục có đáp ứng một điều kiện không.
  3. Danh sách mới sẽ chỉ chứa các mục đáp ứng điều kiện.

Copied!

my_list = [1, 21, 3, 7, 14, 19, 28, 35] lte_10 = [ item for item in my_list if item = 10 ] print[gte_10] # 👉️ [21, 14, 19, 28, 35]

Chúng tôi đã sử dụng hai danh sách toàn diện để lặp lại trong danh sách.

Danh sách các hệ thống được sử dụng để thực hiện một số hoạt động cho mọi yếu tố hoặc chọn một tập hợp con của các phần tử đáp ứng một điều kiện.

Trên mỗi lần lặp, chúng tôi kiểm tra xem một điều kiện có được đáp ứng và trả về mục khớp không.

Các danh sách mới chỉ chứa các yếu tố đáp ứng điều kiện.

Bạn có thể sử dụng phương pháp này để kiểm tra bất kỳ điều kiện.

Cách tiếp cận mà bạn chọn là một vấn đề sở thích cá nhân. Tôi sẽ sử dụng danh sách hiểu biết để kiểm tra các điều kiện đơn giản và vòng lặp for để kiểm tra các điều kiện liên quan hơn khi chia danh sách.

Làm thế nào để bạn chia một danh sách theo điều kiện trong Python?

Split [], để chia danh sách thành một bộ sưu tập các danh sách phụ liên tiếp. Ví dụ. Chia [[1,2,3,4,5,3,6], 3] -> [[1,2], [4,5], [6]], trái ngược với việc chia các yếu tố của danh sách theo danh mục. , to split the list into an ordered collection of consecutive sub-lists. E.g. split[[1,2,3,4,5,3,6], 3] -> [[1,2],[4,5],[6]] , as opposed to dividing a list's elements by category.

Làm thế nào để bạn tạo một danh sách dựa trên một điều kiện trong Python?

Làm thế nào để tạo danh sách trong Python..
Khởi tạo một danh sách trống ..
Vòng lặp trên một phần tử hoặc một loạt các yếu tố ..
Nối từng phần tử vào cuối danh sách ..

Làm thế nào để bạn chia dữ liệu trong một danh sách trong Python?

Phương thức phân chia chuỗi python [] Phương thức phân tách một chuỗi thành một danh sách.Bạn có thể chỉ định phân tách, dấu phân cách mặc định là bất kỳ khoảng trắng nào.Lưu ý: Khi MaxSplit được chỉ định, danh sách sẽ chứa số lượng phần tử được 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.

Làm thế nào để bạn chia một danh sách thành hai trong Python?

Điều này có thể được thực hiện bằng các bước sau:..
Nhận độ dài của một danh sách bằng hàm Len [] ..
Nếu độ dài của các bộ phận không được đưa ra, thì hãy chia độ dài của danh sách cho 2 bằng toán tử sàn để lấy chỉ số giữa của danh sách ..
Cắt danh sách thành hai nửa bằng cách sử dụng [: middle_index] và [middle_index:].

Bài Viết Liên Quan

Chủ Đề