Danh sách cắt trăn

Vì vậy, bạn đã có một danh sách, bộ dữ liệu hoặc mảng và bạn muốn lấy các bộ phần tử con cụ thể từ nó mà không cần bất kỳ vòng lặp dài, rút ​​ra nào?

Nội dung chính Hiển thị

  • Cắt danh sách Python/Mảng và cú pháp Tuples
  • Gia số Python Slicing nâng cao (Danh sách, Bộ dữ liệu và Mảng)
  • Cắt lát Python (Danh sách, Bộ dữ liệu và Mảng) trong Đảo ngược
  • Cắt Python Tuples
  • Sử dụng đối tượng Slice Python
  • Video liên quan

Python có một tính năng tuyệt vời chỉ dành cho tính năng đó được gọi là cắt lát. Cắt lát không chỉ có thể được sử dụng cho danh sách, bộ dữ liệu hoặc mảng mà còn cho các cấu trúc dữ liệu tùy chỉnh, với đối tượng lát, sẽ được sử dụng sau trong bài viết này

Cắt danh sách Python/Mảng và cú pháp Tuples

Hãy bắt đầu với một danh sách bình thường, hàng ngày

1

>>> a = [1, 2, 3, 4, 5, 6, 7, 8]

Không có gì điên rồ, chỉ là một danh sách bình thường với các số từ 1 đến 8. Bây giờ, giả sử rằng chúng ta thực sự muốn các phần tử phụ 2, 3 và 4 được trả về trong một danh sách mới. làm sao chúng ta làm việc đó bây giờ?

KHÔNG với vòng lặp for, đó là cách. Đây là cách làm việc của Pythonic

1

2

>>> a[1. 4]

[2, 3, 4]

Điều này trả về chính xác những gì chúng tôi muốn. Cái quái gì mà cú pháp đó có nghĩa là gì?

Hãy để tôi giải thích nó. 1 có nghĩa là bắt đầu ở phần tử thứ hai trong danh sách (lưu ý rằng chỉ số cắt bắt đầu từ 0). 4 có nghĩa là kết thúc ở phần tử thứ năm trong danh sách, nhưng không bao gồm phần tử đó. Dấu hai chấm ở giữa là cách các danh sách của Python nhận ra rằng chúng ta muốn sử dụng phép cắt để lấy các đối tượng trong danh sách

Gia số Python Slicing nâng cao (Danh sách, Bộ dữ liệu và Mảng)

Ngoài ra còn có một mệnh đề thứ hai tùy chọn mà chúng ta có thể thêm vào để cho phép chúng ta đặt cách chỉ mục của danh sách sẽ tăng lên giữa các chỉ mục mà chúng ta đã đặt

Trong ví dụ trên, giả sử rằng chúng tôi không muốn số 3 xấu xí đó được trả về và chúng tôi chỉ muốn các số chẵn, đẹp trong danh sách của mình. Dễ như ăn bánh

1

2

>>> a[1. 4. 2]

[2, 4]

Thấy chưa, đơn giản vậy thôi. Dấu hai chấm cuối cùng đó cho Python biết rằng chúng tôi muốn chọn mức tăng số lần cắt của chúng tôi. Theo mặc định, Python đặt số gia này thành 1, nhưng dấu hai chấm thừa ở cuối các số cho phép chúng tôi chỉ định những gì chúng tôi muốn.

Cắt lát Python (Danh sách, Bộ dữ liệu và Mảng) trong Đảo ngược

Được rồi, nếu chúng ta muốn danh sách của mình ngược lại, chỉ để giải trí thì sao?

1

2

>>> a[. -1]

[8, 7, 6, 5, 4, 3, 2, 1]

Gì?. Cái quái gì vậy?

Danh sách có một chút chức năng mặc định khi cắt. Nếu không có giá trị nào trước dấu hai chấm đầu tiên, điều đó có nghĩa là bắt đầu từ chỉ mục đầu tiên của danh sách. Nếu không có giá trị sau dấu hai chấm đầu tiên, điều đó có nghĩa là đi đến cuối danh sách. Điều này giúp chúng tôi tiết kiệm thời gian để chúng tôi không phải chỉ định thủ công len(a) làm chỉ mục kết thúc

Được chứ. Và -1 tôi lẻn vào cuối cùng? . Nếu bạn muốn các chỉ mục chẵn đi ngược lại, bạn có thể bỏ qua mọi phần tử thứ hai và đặt phép lặp thành -2. Giản dị

Cắt Python Tuples

Mọi thứ ở trên cũng hoạt động cho các bộ dữ liệu. Cú pháp chính xác giống nhau và cách thực hiện chính xác giống nhau. Tôi sẽ đưa ra một ví dụ chỉ để minh họa rằng nó thực sự giống nhau

1

2

3

>>> t = (2, 5, 7, 9, 10, 11, 12)

>>> t[2. 4]

(7, 9)

Và đó là nó. Đơn giản, thanh lịch và mạnh mẽ

Sử dụng đối tượng Slice Python

Có một dạng cú pháp khác mà bạn có thể sử dụng có thể dễ hiểu hơn. Có các đối tượng trong Python được gọi là đối tượng lát và có thể được sử dụng thay cho cú pháp dấu hai chấm ở trên

Đây là một ví dụ

1

2

3

4

>>> a = [1, 2, 3, 4, 5]

>>> sliceObj = slice(1, 3)

>>> a[sliceObj]

[2, 3]

Việc khởi tạo đối tượng lát có 3 đối số với đối số cuối cùng là gia số chỉ mục tùy chọn. Định dạng phương thức chung là. lát cắt (bắt đầu, dừng, tăng) và nó tương tự để bắt đầu. dừng lại. tăng khi áp dụng cho một danh sách hoặc tuple

Đó là nó

Nếu bạn muốn biết cách cắt chuỗi, điều đó được đề cập trong một bài viết khác có tiêu đề Cách lấy chuỗi con từ một chuỗi trong Python Slicing Strings

Đó là tất cả cho bây giờ. Hy vọng bạn thích học về cắt lát và tôi hy vọng nó sẽ hỗ trợ bạn trong nhiệm vụ của mình