Hướng dẫn python type sequence - trình tự loại python
Trong bài viết trước, tôi đã giới thiệu về built-in function và đưa ra một số ví dụ về việc dùng built-in function sẽ đẩy nhanh tốc độ thực thi của chương trình. Bài viết tiếp theo này, tôi sẽ giới thiệu tiếp một số built-in functions thường được các lập trình viên Python "ưu ái" sử dụng khi xử lý các logic liên quan đến các đối tượng của kiểu dữ liệu lặp (sequence type object) như list/set/dict/string/tuple. Show
Đặc điểm của các đối tượng của kiểu dữ liệu lặp là cho phép lập trình viên lấy ra từng phần tử trong nó, hành động lấy ra các đối tượng có thể lặp đi lặp lại một cách tuần tự bằng vòng lặp for, while, next, .... Ở bài viết trước, tôi đã đưa ra các ví dụ về tốc độ xử lý của 2 built-in function sum và len, bài viết tiếp theo này, tôi sẽ bỏ qua việc chứng minh tốc độ thực thi của built-in function mà tập trung vào chức năng và cách sử dụng của built-in function. 1. sorted 9Đầu vào:- iterable: Một sequence-type-object - key: Tham số tùy chọn, cho phép sắp xếp sequence-type-object theo một tiêu chí nào đó.- reverse: Tham số tùy chọn, mặc định là False; Nếu False thì sắp xếp theo tăng dần, True sắp xếp theo giảm dầnĐầu ra: Một sequence-type-object đã được sắp xếp theo thứ tự (tăng dần hoặc giảm dần) và theo tiêu chí key.: Function đầu tiên mà tôi muốn giới thiệu với các bạn là function 0, đây là một built-in function sẽ giúp các lập trình viên tiết kiệm được nhiều số dòng code và giải quyết được một số bài toán đặc biệt.Ví dụ:
Kết quả: 1 2 3 2 3Lưu ý:Trong các function được cung cấp bởi list object cũng có một function là 4.Điều khác biệt giữa 4 và 6 là 4 tác động trực tiếp vào list, thay đổi vị trí các phần tử trong list mà không thay đổi id của list. Còn 6 là trả về một list mới, có
id khác với list đầu vào.
Kết quả:
Dùng 4 hay 6 tùy vào nhu cầu của lập trình viên.Cách sử dụng 1 trong sorted khá uyển chuyển, khi lập trình viên đưa ra một điều kiện gắn vào với key, mỗi lần duyệt qua một phần tử trong sequence-type-object, sẽ phát sinh một lần tính toán theo điều kiện và dùng kết quả của phép tính toán đó để thực hiện sắp xếp trong sequence-type-object.Định nghĩa về cách sử dụng 1 này hơi khó hiểu, chúng ta đến một ví dụ sau để dễ hiểu hơn.Đề bài: Cho một danh sách tên một số loại hoa quả, hãy sắp xếp danh sách theo thứ tự tăng dần của độ dài (số lượng ký tự) các loại hoa quả.
3 4 4Bài toán trên nếu để làm theo cách lập trình thông thường (kể cả dùng python để giải quyết) cũng sẽ tốn khá khá "giấy bút" và các biến dữ liệu phụ. Nhưng dùng built-in function chỉ tốn đúng 01 dòng. Tiếp tục đi vào ví dụ thứ 2 để nhấn mạnh thêm tiện ích của key nhé. Đề bài: Cho một list các tuple chứa 3 số. Hãy sắp xếp các tuple trong list theo thứ tự tăng dần của phần tử thứ 2 trong tuple.
5 6 6Ngoài cách viết trên, còn cách viết ngắn gọn hơn dùng đến biểu thức 7
2. EnumerateĐây là một function được đưa ra để giúp các lập trình viên thực hiện lấy ra cặp giá trị index-value từ các đối tượng sequence-type-object (list, set, dict, string,...) Sử dụng enumerate sẽ thay thế được cú pháp lấy ra index-value từ đối tượng sequence-type-object thường gặp với C-style.
Câu hỏi đặt ra là đối tượng trả về của function enumerate là gì ? và từng đối tượng được sử dụng trong vòng lặp for phía trên là kiểu dữ liệu gì?
Kết quả: 8 9 0 1 2 9 0 1 2Lưu ý:Trong các function được cung cấp bởi list object cũng có một function là 4.Điều khác biệt giữa 4 và 6 là 4 tác động trực tiếp vào list, thay đổi vị trí các phần tử trong list mà không thay đổi id của list. Còn 6 là trả về một list mới, có id khác với list đầu vào.Kết quả:
Dùng 4 hay 6 tùy vào nhu cầu của lập trình viên. 3Cách sử dụng 1 trong sorted khá uyển chuyển, khi lập trình viên đưa ra một điều kiện gắn vào với key, mỗi lần duyệt qua một phần tử trong sequence-type-object, sẽ phát sinh một lần tính toán theo điều kiện và dùng kết quả của phép tính toán đó để thực hiện sắp xếp trong sequence-type-object.
Định nghĩa về cách sử dụng 1 này hơi khó hiểu, chúng ta đến một ví dụ sau để dễ hiểu hơn. 6 7 8 9Đề bài: Cho một danh sách tên một số loại hoa quả, hãy sắp xếp danh sách theo thứ tự tăng dần của độ dài (số lượng ký tự) các loại hoa quả.Bài toán trên nếu để làm theo cách lập trình thông thường (kể cả dùng python để giải quyết) cũng sẽ tốn khá khá "giấy bút" và các biến dữ liệu phụ. Nhưng dùng built-in function chỉ tốn đúng 01 dòng.Tiếp tục đi vào ví dụ thứ 2 để nhấn mạnh thêm tiện ích của key nhé. Một sequence-type-object Đề bài: Cho một list các tuple chứa 3 số. Hãy sắp xếp các tuple trong list theo thứ tự tăng dần của phần tử thứ 2 trong tuple. Ngoài cách viết trên, còn cách viết ngắn gọn hơn dùng đến biểu thức 7 0Kết quả trả về: 1 2 1 2
1Kết quả: 3 0 3 0 3 0 3 0Với dictionary, function 7 sẽ thực hiện lấy các giá trị của key trong dictionary để tính toán kết quả trả về. 2Kết quả: 3 3 3Kết quả: 0 03.2. anyĐầu vào: Một sequence-type-objectĐầu ra: Trả về True nếu chỉ cần một phần tử trong sequence-type-object có giá trị True. Nếu không, trả về False: Một sequence-type-object Hàm any hơi khác một chút so với hàm all. Hàm all() chỉ cần có 1 giá trị là False sẽ trả về False, hàm any thì chỉ cần một phần tử giá trị True là trả về True 4Tương tự với all khi ứng xử với dictionary, any cũng nhận đầu vào key của các dictionary 54. Reversedreversed(sequence): Đảo ngược các phần tử trong một sequence-type-object Đầu vào: sequence-type-objectĐầu ra: sequence-type-object có type là list_reversesequence-type-object.: sequence-type-object 6Kết quả: 7
5. max & min 0(sequence-type-object): Trả về số lớn nhất trong các số thuộc sequence-type-object 1(sequence-type-object): Trả về số nhỏ nhất trong các số thuộc sequence-type-object 1(sequence-type-object): Trả về số nhỏ nhất trong các số thuộc sequence-type-objectRiêng với 2 function này chắc không cần nói nhiều về chúng, bài toán tìm số lớn nhất & nhỏ nhất tốn rất nhiều "giấy bút" của các lập trình viên và Python đã cung cấp luôn 2 built-in function để giải quyết bài toán này. Trên thực tế, với một số tập dữ liệu đặc biệt có thể built-in function cho kết quả chưa chắc đã tối ưu hơn các cách giải quyết bài toán bằng tư duy toán học & thuật toán nhưng bằng việc chỉ dùng 1 dòng lệnh để tính ra kết quả thì cũng xứng đáng để chúng ta sử dụng 2 function này 8Kết quả: 2 3 3Sử dụng built-in function reversed sẽ giúp chúng ta lấy ra nhanh một đối tượng đảo ngược của đối tượng gốc thay vì sử dụng vòng lặp để append dần các đối tượng từ cuối lên đầu hoặc sử dụng slice [::-1].5. max & min |