Các ký hiệu trong Python
Kiểu dữ liệu trong Python vô cùng đa dạng và phong phú. Ở bài viết này, hãy cùng Quantrimang.com tìm hiểu các kiểu và cách dùng kiểu dữ liệu trong Python như thế nào nhé! Show
Python là một trong số ngôn ngữ lập trình phổ biến nhất hiện nay với nhiều kiểu dữ liệu khác nhau. Một trong số kiểu dữ liệu phổ biến nhất là:
Ví dụ, bạn có thể dùng hàm 28 để kiểm tra kiểu dữ liệu của một biến như sau:
Vì bài viết sẽ liệt kê những nội dung quan trọng nhất của tất cả các kiểu dữ liệu trong Python nên sẽ khá dài. Mỗi kiểu dữ liệu đều đi kèm với ví dụ cụ thể để bạn dễ hình dung. Hãy chắc chắn bạn đã lưu lại trang Tài liệu Python này để cập nhật những bài mới nhất nhé. Đừng quên làm bài tập Python để củng cố kiến thức nữa nhé. Kiểu dữ liệu trong Python1. Biến trong PythonBiến là một vị trí trong bộ nhớ được sử dụng để lưu trữ dữ liệu (giá trị). Biến được đặt tên duy nhất để phân biệt giữa các vị trí bộ nhớ khác nhau. Các quy tắc để viết tên một biến giống như quy tắc viết các định danh trong Python. Trong Python, bạn không cần khai báo biến trước khi sử dụng, chỉ cần gán cho biến một giá trị và nó sẽ tồn tại. Cũng không cần phải khai báo kiểu biến, kiểu biến sẽ được nhận tự động dựa vào giá trị mà bạn đã gán cho biến. Gán giá trị cho biến: Để gán giá trị cho biến ta sử dụng toán tử =. Bất kỳ loại giá trị nào cũng có thể gán cho biến hợp lệ. Ví dụ:
Phía trên là 3 câu lệnh gán, "Hồng" là một chuỗi ký tự, được gán cho biến hoa, 3 là số nguyên và được gán cho la, 5.5 là số thập phân và gán cho canh. Gán nhiều giá trị: Trong Python bạn có thể thực hiện gán nhiều giá trị trong một lệnh như sau:
Nếu muốn gán giá trị giống nhau cho nhiều biến thì có thể viết lệnh như sau:
Lệnh trên sẽ gán giá trị 3 cho cả 3 biến là hoa, la và canh. 2. Kiểu dữ liệu số trong PythonCác kiểu dữ liệu số trong PythonPython hỗ trợ số nguyên, số thập phân và số phức, chúng lần lượt được định nghĩa là các lớp int, float, complex trong Python. Số nguyên và số thập phân được phân biệt bằng sự có mặt hoặc vắng mặt của dấu thập phân. Ví dụ: 5 là số nguyên, 5.0 là số thập phân. Python cũng hỗ trợ số phức và sử dụng hậu tố 29 hoặc 30 để chỉ phần ảo. Ví dụ: 31. Ngoài 32 và 33, Python hỗ trợ thêm 2 loại số nữa là 34 và 35.Ta sẽ dùng hàm 36 để kiểm tra xem biến hoặc giá trị thuộc lớp số nào và hàm 37 để kiểm tra xem chúng có thuộc về một class cụ thể nào không.
Số nguyên trong Python không bị giới hạn độ dài, số thập phân bị giới hạn đến 16 số sau dấu thập phân. Những con số chúng là làm việc hàng ngày thường là hệ số 10, nhưng lập trình viên máy tính (thường là lập trình viên nhúng) cần làm việc với hệ thống số nhị phân, thập lục phân và bát phân. Để biểu diễn những hệ số này trong Python, ta đặt một tiền tố thích hợp trước số đó. Tiền tố hệ số cho các số Python: Hệ thống sốTiền tốHệ nhị phân'0b' hoặc '0B'Hệ bát phân'0o' hoặc '0O'Hệ thập lục phân'0x' hoặc '0X'(Bạn đặt tiền tố nhưng không có dấu ' ' nhé). Đây là ví dụ về việc sử dụng các tiền tố hệ số trong Python, và khi dùng hàm 38 để in giá trị của chúng ra màn hình, ta sẽ nhận được số tương ứng trong hệ số 10.
Chuyển đổi giữa các kiểu số trong PythonChúng ta có thể chuyển đổi kiểu số này sang kiểu số khác. Điều này còn được gọi là cưỡng chế (coercion). Các phép toán như cộng, trừ sẽ ngầm chuyển đổi số nguyên thành số thập phân (một cách tự động) nếu có một toán tử trong phép toán là số thập phân. Ví dụ: Nếu bạn thực hiện phép cộng giữa số nguyên là 2 và số thập phân là 3.0, thì 2 sẽ bị cưỡng chế chuyển thành số thập phân 2.0 và kết quả trả về sẽ là số thập phân 5.0.
Ta có thể sử dụng các hàm Python tích hợp sẵn như 39, 40 và 41 để chuyển đổi giữa các kiểu số một cách rõ ràng. Những hàm này thậm chí có thể chuyển đổi từ các chuỗi.
Khi chuyển đổi từ số thập phân sang số nguyên, số sẽ bị bỏ bớt, chỉ lấy phần nguyên. Mô-đun Decimal trong PythonClass float được tích hợp trong Python có thể khiến chúng ta ngạc nhiên đôi chút. Thông thường nếu tính tổng 1.1 và 2.2 ta nghĩ kết quả sẽ là 3.3, nhưng có vẻ không phải vậy. Nếu bạn kiểm tra tính đúng sai của phép toán này trong Python, sẽ nhận được kết quả là False.
Chuyện gì xảy ra vậy? Điều này là do, các số thập phân được thực hiện trong phần cứng máy tính dưới dạng phân số nhị phân, vì máy tính chỉ hiểu các số nhị phân (0 và 1) nên hầu hết các phân số thập phân mà chúng ta biết, không thể được lưu trữ chính xác trong máy tính. Ví dụ, ta không thể biểu diễn phân số 1/3 dưới dạng số thập phân, vì nó là một số thập phân vô hạn tuần hoàn, với các số sau dấu thập phân dài vô hạn, nên ta chỉ có thể ước tính nó. Khi chuyển đổi phần thập phân 0.1, sẽ dẫn đến phần nhị phân dài vô hạn của 0.000110011001100110011... và máy tính chỉ lưu trữ một phần số hữu hạn sau dấu . của nó thôi. Do đó, số được lưu trữ chỉ xấp xỉ 0.1 chứ không bao giờ bằng 0.1. Đó là lý do vì sao, phép cộng chúng ta nói đến ở trên không đưa ra kết quả như chúng ta mong đợi. Đó là giới hạn của phần cứng máy tính chứ không phải lỗi của Python. Giờ bạn thử gõ phép cộng trên vào Python xem kết quả trả về là bao nhiêu nhé:
Để khắc phục vấn đề này, chúng ta có thể sử dụng mô-đun Decimal trong Python. Trong khi số float chỉ lấy 16 số sau dấu thập phân thì mô-đun Decimal cho phép tùy chỉnh độ dài của số. 0Mô-đun này được sử dụng khi chúng ta muốn thực hiện các phép toán ở hệ số thập phân để có kết quả như đã học ở trường. Điều này cũng khá quan trọng, ví dụ như 25.50kg sẽ chính xác hơn 25.5kg, vì 2 chữ số thập phân vẫn chính xác hơn 1 chữ số. 1Nếu muốn code ngắn gọn hơn, bạn có thể nhập mô-đun Decimal và sửa tên mô-đun thành D. 2Trong code này ta nhập mô-đun Decimal và sửa tên nó thành D, kết quả không đổi so với code trên. Bạn có thể thắc mắc trong phần phép nhân, tại sao không sử dụng số Decimal để nhân lại phải thêm số 0 vào sau 4 và cả 2.5. Câu trả lời là tính hiệu quả, các phép toán với số float được hiện nhanh hơn các phép toán Decimal. Khi nào nên sử dụng Decimal thay cho float?Ta thường sử dụng Decimal trong các trường hợp sau:
Phân số trong PythonPython cung cấp các phép toán liên quan đến phân số thông qua mô-đun fractions. Một phân số có tử số và mẫu số, cả hai đều là số nguyên. Ta có thể tạo đối tượng phân số (Fraction) theo nhiều cách khác nhau: 3Khi tạo phân số từ float, ta có thể nhận được những kết quả không bình thường, điều này là do hạn chế của phần cứng máy tính như đã thảo luận trong phần mô-đun decimal. Đặc biệt, bạn có thể khởi tạo một phân số từ string. Đây là cách khởi tạo được ưa thích khi sử dụng số thập phân. 4Kiểu dữ liệu phân số hỗ trợ đầy đủ các phép toán cơ bản như cộng, trừ, nhân, chia, logic: 5Toán học trong PythonPython cung cấp các mô-đun math và random để giải quyết các vấn đề toán học khác như lượng giác, logarit, xác suất và thống kê, v.v... Vì mô-đun math có khá nhiều hàm và thuộc tính, nên mình tính sẽ làm một bài riêng để liệt kê chúng. Dưới đây là ví dụ về math trong Python. 6Sử dụng trình thông dịch như máy tính bỏ túiTrình thông dịch hoạt động như một máy tính đơn giản: Bạn có thể nhập vào một phép tính và nó sẽ viết ra giá trị. Cú pháp biểu thức khá đơn giản: các toán tử như +, -, * và / làm việc giống như trong hầu hết các ngôn ngữ lập trình khác (Pascal, C), dấu ngoặc đơn () có thể được sử dụng để nhóm. Ví dụ: 7Số nguyên (ví dụ như 42, 43, 44) có kiểu 45, số dạng thập phân (như 46, 47) có kiểu 48.Phép chia ( 49) luôn luôn trả về kiểu float. Để thực hiện phép chia lấy phần nguyên (loại bỏ các số sau dấu thập phân) bạn có thể sử dụng toán tử 50; để tính phần dư thì sử dụng 51 như ví dụ dưới đây: 8Với Python, bạn có thể sử dụng toán tử 52 để tính số mũ: 9Dấu bằng 53 được sử dụng để gán giá trị cho 1 biến. Sau đó, không có kết quả nào được hiển thị trước dấu nhắc lệnh tiếp theo: 0Nếu một biến không được định nghĩa (gán giá trị), cố gắng sử dụng biến đó, bạn sẽ nhận được lỗi sau: 1Python hỗ trợ đầy đủ cho dấu chấm động, phép tính có cả số nguyên và số thập phân thì kết quả sẽ trả về số dưới dạng thập phân (nguyên văn: toán tử với toán hạng kiểu hỗn hợp chuyển đổi toán hạng số nguyên sang số thập phân): 2Trong chế độ tương tác, biểu thức được in ra cuối cùng sẽ được gán cho biến 54, giúp dễ dàng thực hiện các phép tính tiếp theo hơn. Ví dụ: 3Bạn nên coi biến này là read-only, đừng gán giá trị cho nó - vì nếu tạo ra một biến cùng tên nó sẽ chiếm mất biến mặc định này và không còn làm được những thứ hay ho như trên nữa. 3. Chuỗi (string)String trong Python là một dãy các ký tự. Máy tính không xử lý các ký tự, chúng chỉ làm việc với số nhị phân. Dù bạn có thể nhìn thấy các ký tự trên màn hình, nhưng chúng được lưu trữ và xử lý nội bộ dưới dạng kết hợp của số 0 và 1. Việc chuyển đổi ký tự thành số được gọi là mã hóa và quá trình ngược lại được gọi là giải mã. ASCII và Unicode là 2 trong số những mã hóa phổ biến thường được sử dụng. Trong Python, string là một dãy các ký tự Unicode. Unicode bao gồm mọi ký tự trong tất cả các ngôn ngữ và mang lại tính đồng nhất trong mã hóa. Cách tạo string trong PythonBên cạnh số, Python cũng có thể thao tác với chuỗi, được biểu diễn bằng nhiều cách. Chúng có thể được để trong dấu nháy đơn ( 55) hoặc kép ( 56) với cùng một kết quả. 57 được sử dụng để "trốn (escape)" 2 dấu nháy này. 4Trong trình thông dịch tương tác, chuỗi kết quả bao gồm phần trong dấu ngoặc kép và các ký tự đặc biệt "trốn" được nhờ sử dụng \. Dù đầu ra trông có vẻ hơi khác với đầu vào (dấu nháy kèm theo có thể thay đổi) nhưng hai chuỗi này là tương đương. Chuỗi được viết trong dấu ngoặc kép khi chuỗi chứa dấu nháy đơn và không có dấu nháy kép), ngược lại nó sẽ được viết trong dấu nháy đơn. Hàm print() tạo chuỗi đầu ra dễ đọc hơn, bằng cách bỏ qua dấu nháy kèm theo và in các ký tự đặc biệt, đã "trốn" được dấu nháy: 5Nếu không muốn các ký tự được thêm vào bởi 57 được trình thông dịch hiểu là ký tự đặc biệt thì sử dụng chuỗi raw bằng cách thêm 59 vào trước dấu nháy đầu tiên: 6Chuỗi ký tự dạng chuỗi có thể viết trên nhiều dòng bằng cách sử dụng 3 dấu nháy: 60 hoặc 61. Kết thúc dòng tự động bao gồm trong chuỗi, nhưng có thể ngăn chặn điều này bằng cách thêm 57 vào cuối dòng. Ví dụ: 7Đây là kết quả (dòng mới ban đầu không được tính): Đây là danh sách tất cả các ký tự thoát (escape sequence) được Python hỗ trợ: ASCII Bell \bASCII Backspace\fASCII Formfeed\nASCII Linefeed\rASCII Carriage Return\tASCII Horizontal Tab\vASCII Vertical Tab\oooKý tự có giá trị bát phân là ooo\xHHKý tự có giá trị thập lục phân là HHVí dụ: Hãy chạy từng lệnh riêng lẻ ngay trong trình biên dịch để thấy kết quả bạn nhé. 8Cách truy cập vào phần tử của chuỗiCác chuỗi có thể được lập chỉ mục với ký tự đầu tiên được đánh số 0. Không có kiểu ký tự riêng biệt, mỗi ký tự đơn giản là một con số: 9Chỉ số cũng có thể là số âm, bắt đầu đếm từ bên phải: 0Lưu ý rằng vì -0 cũng tương tự như 0, nên các chỉ số âm bắt đầu từ -1. Ngoài việc đánh số, thì cắt lát cũng được hỗ trợ. Trong khi index được sử dụng để lấy các ký tự riêng lẻ thì cắt lát sẽ cho phép bạn lấy chuỗi con: 1Hãy để ý đến cách các ký tự được giữ lại và loại trừ. Nó luôn đảm bảo rằng 63 bằng 64: 2Các chỉ số trong cắt chuỗi có thiết lập mặc định khá hữu ích, có 2 chỉ số bị bỏ qua theo mặc định, là 0 và kích thước của chuỗi được cắt. 3Một cách khác để ghi nhớ cách thức cắt chuỗi làm việc là hình dung các chỉ số như là vách ngăn giữa các ký tự, với ký tự ngoài cùng bên trái được đánh số 0. Khi đó, ký tự cuối cùng bên phải, trong chuỗi n ký tự sẽ có chỉ số n, ví dụ: 4Hàng đầu tiên của số mang đến vị trí của chỉ số từ 0 đến 6 trong chuỗi. Hàng thứ hai là các chỉ số âm tương ứng. Khi cắt từ i đến j sẽ bao gồm tất cả các ký tự nằm giữa i và j, tương ứng. Đối với các chỉ số không âm, chiều dài của một lát cắt là sự chênh lệch của các chỉ số, nếu cả hai đều nằm trong giới hạn. Ví dụ, chiều dài của word[1:3] là 2. Cố gắng sử dụng một chỉ mục quá lớn sẽ trả về kết quả lỗi: 5Tuy nhiên, các chỉ mục bên ngoài phạm vi lát cắt vẫn được xử lý gọn gàng khi được sử dụng để cắt: 6Thay đổi hoặc xóa chuỗiCác chuỗi Python không thể thay đổi - chúng là cố định. Vì vậy, nếu cứ cố tình gán một ký tự nào đó cho vị trí đã được lập chỉ mục thì bạn sẽ nhận được thông báo lỗi: 7Nếu cần một chuỗi khác, cách tốt nhất là tạo mới: 8Bạn không thể xóa hay loại bỏ ký tự khỏi chuỗi, nhưng giống như tuple, bạn có thể xóa toàn bộ chuỗi, bằng cách sử dụng từ khóa del: 9Nối chuỗiCác chuỗi có thể được nối với nhau bằng toán tử 65 và thay thế bằng 66: 0Hai hoặc nhiều ký tự dạng chuỗi (tức là ký tự trong dấu nháy) cạnh nhau được nối tự động. 1Tính năng trên chỉ làm việc với chuỗi dạng chuỗi (literal), không áp dụng với biến hay biểu thức: 2Nếu muốn ghép nối các biến với nhau hoặc biến với chuỗi hãy sử dụng dấu 65: 3Tính năng này đặc biệt hữu ích khi muốn bẻ các chuỗi dài thành chuỗi ngắn hơn: 4Nếu muốn nối các chuỗi trong nhiều dòng khác nhau, hãy sử dụng dấu ngoặc đơn: 5Lặp và kiểm tra phần tử của chuỗiGiống list và tuple, bạn cũng sử dụng vòng lặp for khi cần lặp qua một chuỗi, như ví dụ đếm số ký tự "i" trong chuỗi dưới đây: 6Để kiểm tra một chuỗi con có trong chuỗi hay chưa, hãy dùng từ khóa in, như sau: 7Hàm Python tích hợp sẵn để làm việc với chuỗiCó 2 hàm thường dùng nhất khi làm việc với string trong Python là enumerate() và len(). Hàm 68 được tích hợp trong Python, sẽ trả về độ dài của chuỗi: 8Hàm enumerate() trả về đối tượng liệt kê, chứa cặp giá trị và index của phần tử trong string, khá hữu ích trong khi lặp. 9Phương thức format() để định dạng chuỗiPhương thức format() rất linh hoạt và đầy sức mạnh khi dùng để định dạng chuỗi. Định dạng chuỗi chứa dấu {} làm trình giữ chỗ hoặc trường thay thế để nhận giá trị thay thế. Bạn cũng có thể sử dụng đối số vị trí hoặc từ khóa để chỉ định thứ tự. 0Ta có kết quả khi chạy code trên như sau: 1Phương thức format() có thể có những đặc tả định dạng tùy chọn. Chúng được tách khỏi tên trường bằng dấu :. Ví dụ, có thể căn trái <, căn phải > hoặc căn giữa ^ một chuỗi trong không gian đã cho. Có thể định dạng số nguyên như số nhị phân, thập lục phân; số thập phân có thể được làm tròn hoặc hiển thị dưới dạng số mũ. Có rất nhiều định dạng bạn có thể sử dụng. 2Định dạng chuỗi kiểu cũ: Bạn có thể định dạng chuỗi trong Python về phong cách sprintf() được sử dụng trong ngôn ngữ lập trình C bằng toán tử %. 3Phương thức thường được sử dụng trong stringCó rất nhiều phương thức được tích hợp sẵn trong Python để làm việc với string. Ngoài format() được đề cập bên trên còn có lower(), upper(), join(), split(), find(), replace(), v.v.... 44. Danh sách (list)Python cung cấp một loạt các dữ liệu phức hợp, thường được gọi là các chuỗi (sequence), sử dụng để nhóm các giá trị khác nhau. Đa năng nhất là danh sách (list). Cách tạo list trong PythonTrong Python, list được biểu diễn bằng dãy các giá trị, được phân tách nhau bằng dấu phẩy, nằm trong dấu []. Các danh sách có thể chứa nhiều mục với kiểu khác nhau, nhưng thông thường là các mục có cùng kiểu. 5List không giới hạn số lượng mục, bạn có thể có nhiều kiểu dữ liệu khác nhau trong cùng một list, như chuỗi, số nguyên, số thập phân,... 6Bạn cũng có thể tạo các list lồng nhau (danh sách chứa trong danh sách), ví dụ: 7Hoặc khai báo list lồng nhau từ đầu: 8Truy cập vào phần tử của listCó nhiều cách khác nhau để truy cập vào phần tử của một danh sách: Index (chỉ mục) của list: Sử dụng toán tử index [] để truy cập vào một phần tử của list. Index bắt đầu từ 0, nên một list có 5 phần tử sẽ có index từ 0 đến 4. Truy cập vào phần tử có index khác index của list sẽ làm phát sinh lỗi IndexError. Index phải là một số nguyên, không thể sử dụng float, hay kiểu dữ liệu khác, sẽ tạo lỗi TypeError. 9List lồng nhau có thể truy cập bằng index lồng nhau: 0Index âm: Python cho phép lập chỉ mục âm cho các chuỗi. Index -1 là phần tử cuối cùng, -2 là phần tử thứ 2 từ cuối cùng lên. Nói đơn giản là index âm dùng khi bạn đếm phần tử của chuỗi ngược từ cuối lên đầu. 1Cắt lát (slice) list trong PythonPython cho phép truy cập vào một dải phần tử của list bằng cách sử dụng toán tử cắt lát : (dấu hai chấm). Mọi hành động cắt list đều trả về list mới chứa những yếu tố được yêu cầu. 2Để cắt lát list, bạn chỉ cần sử dụng dấu : giữa 2 index cần lấy các phần tử. [1:5] sẽ lấy phần tử 1 đến 5, [:-8] lấy từ 0 đến phần tử -8,... Nếu thực hiện hành động cắt sau thì nó sẽ trả về một list mới là bản sao của list ban đầu: 3Thay đổi hoặc thêm phần tử vào listList cũng hỗ trợ các hoạt động như nối list: 4Không giống như chuỗi, bị gán cố định, list là kiểu dữ liệu có thể thay đổi. Ví dụ, bạn có thể thay đổi các mục trong list: 5Bạn cũng có thể cho thêm mục mới vào cuối list bằng cách sử dụng các phương thức, chẳng hạn như append(): 6Việc gán cho lát cũng có thể thực hiện và thậm chí có thể thay đổi cả kích thước của list hay xóa nó hoàn toàn: 7Hàm len() cũng có thể áp dụng với list: 8Xóa hoặc loại bỏ phần tử khỏi list trong PythonBạn có thể xóa một hoặc nhiều phần tử khỏi list sử dụng từ khóa del, có thể xóa hoàn toàn cả list. 9Bạn cũng có thể sử dụng remove() để loại bỏ những phần tử đã cho hoặc pop() để loại bỏ phần tử tại một index nhất định. pop() loại bỏ phần tử và trả về phần tử cuối cùng nếu index không được chỉ định. Điều này giúp triển khai list dưới dạng stack (ngăn xếp) (cấu trúc dữ liệu first in last out - vào đầu tiên, ra cuối cùng). Ngoài ra, phương thức clear() cũng được dùng để làm rỗng một list (xóa tất cả các phần tử trong list). 0Cách cuối cùng để xóa các phần tử trong một list là gán một list rỗng cho các lát phần tử. 1Phương thức list trong PythonNhững phương thức có sẵn cho list trong Python gồm:
Ví dụ: 2Ví dụ 2: 3List comprehension: Cách tạo list mới ngắn gọnList comprehension là một biểu thức đi kèm với lệnh for được đặt trong cặp dấu ngoặc vuông []. Ví dụ: 4Code trên tương đương với: 5Ngoài for, if cũng có thể được sử dụng trong một list comprehension của Python. Lệnh if có thể lọc các phần tử trong list hiện tại để tạo thành list mới. Dưới đây là ví dụ: 6Kiểm tra phần tử có trong list khôngSử dụng keyword in để kiểm tra xem một phần tử đã có trong list hay chưa. Nếu phần tử đã tồn tại, kết quả trả về là True, và ngược lại sẽ trả về False. 7Vòng lặp for trong listSử dụng vòng lặp for để lặp qua các phần tử trong list như ví dụ dưới đây: 8Kết quả trả về sẽ như sau: 9Các hàm Python tích hợp với listCác hàm Python tích hợp sẵn như all(), any(), enumerate(), len(), max(), min(), list(), sorted(),... thường được sử dụng với list để thực hiện những nhiệm vụ khác nhau.
5. TupleTuple trong Python là một chuỗi các phần tử có thứ tự giống như list. Sự khác biệt giữa list và tuple là chúng ta không thể thay đổi các phần tử trong tuple khi đã gán, nhưng trong list thì các phần tử có thể thay đổi. Tuple thường được sử dụng cho các dữ liệu không cho phép sửa đổi và nhanh hơn list vì nó không thể thay đổi tự động. Một tuple được định nghĩa bằng dấu ngoặc đơn (), các phần tử trong tuple cách nhau bằng dấu phẩy (,). Ví dụ: 0Bạn có thể sử dụng toán tử cắt [] để trích xuất phần tử trong tuple nhưng không thể thay đổi giá trị của nó. 1Chạy code trên ta được kết quả: 2Tuple hơn list ở điểm nào?Vì tuple và list khá giống nhau, nên chúng thường được sử dụng trong những tình huống tương tự nhau. Tuy nhiên, tuple vẫn có những lợi thế nhất định so với list, như:
Tạo một tupleTuple được tạo bằng cách đặt tất cả các phần tử của nó trong dấu ngoặc đơn (), phân tách bằng dấu phẩy. Bạn có thể bỏ dấu ngoặc đơn nếu muốn, nhưng nên thêm nó vào cho code rõ ràng hơn. Tuple không bị giới hạn số lượng phần tử và có thể có nhiều kiểu dữ liệu khác nhau như số nguyên, số thập phân, list, string,... 3Tạo tuple chỉ có một phần tử hơi phức tạp chút, nếu bạn tạo theo cách thông thường là cho phần tử đó vào trong cặp dấu () là chưa đủ, cần phải thêm dấu phẩy để chỉ ra rằng, đây là tuple. 4Truy cập vào các phần tử của tupleCó nhiều cách khác nhau để truy cập vào các phần tử của một tuple, khá giống với list, nên mình không lấy ví dụ cụ thể, các bạn có thể xem lại phần list nha. Index: Sử dụng toán tử index [] để truy cập vào phần tử trong tuple với index bắt đầu bằng 0. Nghĩa là nếu tuple có 6 phần tử thì index của nó sẽ bắt đầu từ 0 đến 5. Nếu cố gắn truy cập đến index 6, 7 thì sẽ tạo lỗi IndexError. Index bắt buộc phải là số nguyên, mà không thể là số thập phân hay bất kỳ kiểu dữ liệu nào khác, nếu không sẽ tạo lỗi TypeError. Những tuple lồng nhau được truy cập bằng cách sử dụng index lồng nhau: 5Index âm: Python cho phép lập chỉ mục âm cho các đối tượng dạng chuỗi. Index -1 tham chiếu đến phần tử cuối cùng, -2 là thứ 2 tính từ cuối tính lên. Cắt lát: Có thể truy cập đến một loạt phần tử trong tuple bằng cách sử dụng toán tử cắt lát : (dấu 2 chấm). Thay đổi một tupleKhông giống như list, tuple không thể thay đổi. Điều này có nghĩa là các phần tử của một tuple không thể thay đổi một khi đã được gán. Nhưng, nếu bản thân phần tử đó là một kiểu dữ liệu có thể thay đổi (như list chẳng hạn) thì các phần tử lồng nhau có thể được thay đổi. Chúng ta cũng có thể gán giá trị khác cho tuple (gọi là gán lại - reassignment). 6Bạn có thể dùng toán tử + để nối 2 tuple, toán tử * để lặp lại tuple theo số lần đã cho. Cả + và * đều cho kết quả là một tuple mới. 7Xóa tupleCác phần tử trong tuple không thể thay đổi nên chúng ta cũng không thể xóa, loại bỏ phần tử khỏi tuple. Nhưng việc xóa hoàn toàn một tuple có thể thực hiện được với từ khóa del như dưới đây: 8Phương thức và hàm dùng với tuple trong PythonPhương thức thêm phần tử và xóa phần tử không thể sử dụng với tuple, chỉ có 2 phương thức sau là dùng được:
9Các hàm dùng trong tuple khá giống với list, gồm có:
Kiểm tra phần tử trong tupleBạn có thể kiểm tra xem một phần tử đã tồn tại trong tuple hay chưa với từ khóa in. 0Lặp qua các phần tử của tuple trong PythonSử dụng vòng lặp for để lặp qua các phần tử trong tuple. 1Kết quả trả về sẽ như sau: 26. SetSet trong Python là tập hợp các phần tử duy nhất, không có thứ tự. Các phần tử trong set phân cách nhau bằng dấu phẩy và nằm trong dấu ngoặc nhọn {}. Nhớ kỹ rằng các phần tử trong set không có thứ tự. Nhưng các phần tử trong set có thể thay đổi, có thể thêm hoặc xóa phần tử của set. Set có thể được sử dụng để thực hiện các phép toán như tập hợp, giao,... Cách tạo setSet được tạo bằng cách đặt tất cả các phần tử trong dấu ngoặc nhọn, phân tách bằng dấu phẩy hoặc sử dụng hàm set(). Set không giới hạn số lượng phần tử, nó có thể chứa nhiều kiểu biến khác nhau, nhưng không thể chứa phần tử có thể thay đổi được như list, set hay dictionary. Ví dụ về set: 3Nếu thực hiện lệnh in như sau: 4Bạn sẽ nhận được kết quả: 5Set với nhiều kiểu dữ liệu hỗn hợp như sau: 6Tạo set rỗng có chút khó khăn. Cặp dấu {} sẽ tạo một dictionary trong Python. Để tạo set không có phần tử nào, ta sử dụng hàm set() mà không có đối số nào. 7Làm sao để thay đổi set trong PythonVì set là tập hợp các phần tử không có thứ tự nên chỉ mục chả có ý nghĩa gì với set. Do đó toán tử cắt [] sẽ không làm việc trên set. Nếu cố tình dùng, bạn sẽ nhận được thông báo lỗi như dưới đây: 8Để thêm một phần tử vào set, bạn sử dụng add() và để thêm nhiều phần tử dùng update(). Update() có thể nhận tuple, list, strring và set làm đối số. Trong mọi trường hợp, Set có giá trị duy nhất, các bản sao sẽ tự động bị loại bỏ. 9Xóa phần tử khỏi setBạn dùng discard() và remove() để xóa phần tử cụ thể khỏi set. Khi phần tử cần xóa không tồn tại trong set thì discard() không làm gì cả, còn remove() sẽ báo lỗi. 00Bạn có thể xóa và trả lại một mục bằng phương thức pop(). Set không có thứ tự, không có cách nào để xác định phần tử nào sẽ bị xóa, điều này diễn ra hoàn toàn ngẫu hứng. Việc xóa hoàn toàn set được thực hiện bằng cách dùng clear(). 01Các toán tử set trong PythonSet thường được sử dụng để chứa các toán tử tập hợp như hợp, giao, hiệu, bù. Có cả phương thức và toán tử để thực hiện những phép toán tập hợp này. Ta sẽ sử dụng 2 tập hợp dưới đây: 02Hợp của A và B là tập hợp tất cả các phần tử của A và B. Hợp được biểu diễn bằng cách sử dụng toán tử | hoặc sử dụng phương thức union(). 03Giao của A và B là tập hợp những phần tử chung của A và B. Để tìm giao của A và B ta có thể dùng toán tử & hoặc hàm intersection(). 04Hiệu của A và B (A-B) là tập hợp phần tử chỉ có trong A, không có trong B. Hiệu của B và A (B-A) là tập hợp phần tử chỉ có trong B không có trong A. Có thể sử dụng toán tử - hoặc hàm difference() để thực hiện phép toán tập hợp này. 05Bù của A và B là tập hợp những phần tử có trong A và B nhưng không phải phần tử chung của hai tập hợp này. Bạn có thể dùng toán tử ^ hoặc hàm symmetric_difference() để thực hiện phép bù. 06Các phương thức dùng trên setPhương thứcMô tảadd()Thêm một phần tử vào set.clear()Xóa tất cả phần tử của set.copy()Trả về bản sao chép của set.difference()Trả về set mới chứa những phần tử khác nhau của 2 hay nhiều set.difference_update()Xóa tất cả các phần tử của set khác từ set này.discard()Xóa phần tử nếu nó có mặt trong set.intersection()Trả về set mới chứa phần tử chung của 2 set.intersection_update()Cập nhật set với phần tử chung của chính nó và set khác.isdisjoint()Trả về True nếu 2 set không có phần tử chung.issubset()Trả về True nếu set khác chứa set này.issuperset()Trả về True nếu set này chưa set khác.pop()Xóa và trả về phần tử ngẫu nhiên, báo lỗi KeyError nếu set rỗng.remove()Xóa phần tử từ set. Nếu phần tử đó không có trong set sẽ báo lỗi KeyError.symmetric_difference()Trả về set mới chứa những phần tử không phải là phần tử chung của 2 set.symmetric_difference_update()Cập nhật set với những phần tử khác nhau của chính nó và set khác.union()Trả về set mới là hợp của 2 set.update()Cập nhật set với hợp của chính nó và set khác.Kiểm tra phần tử trong setBạn có thể kiểm tra một đối tượng xem nó có nằm trong set không, sử dụng từ khóa in. 07Lặp qua phần tử của setSử dụng vòng lặp for để lặp qua các phần tử của set. 08Chạy code trên bạn nhận được kết quả như sau: 09Hàm thường dùng trên setCác hàm thường dùng trên set bao gồm all(), any(), enumerate(), len(), max(), min(), sorted(), sum(). Chức năng của những hàm này khá giống với khi bạn sử dụng trên list, tuple, bạn có thể tham khảo thêm nếu chưa rõ nha. Frozenset trong PythonFrozenset là một lớp mới, có đặc điểm của một set, nhưng phần tử của nó không thể thay đổi được sau khi gán. Để dễ hình dung thì tuple là list bất biến còn frozenset là set bất biến. Các set có thể thay đổi được nhưng không thể băm (hash) được, do đó không thể sử dụng set để làm key cho dictionary. Nhưng frozenset có thể băm được nên có thể dùng như các key cho dictionary. Frozenset có thể tạo bằng hàm frozenset(). Kiểu dữ liệu này hỗ trợ các phương thức như copy(), difference(), intersection(), isdisjoint(), issubset(), issuperset(), symmetric_difference() và union(). Vì không thể thay đổi nên phương thức add() hay remove() không sử dụng được trên frozenset. 7. DictionaryDictionary là tập hợp các cặp khóa giá trị không có thứ tự. Nó thường được sử dụng khi chúng ta có một số lượng lớn dữ liệu. Các dictionary được tối ưu hóa để trích xuất dữ liệu với điều kiện bạn phải biết được khóa để lấy giá trị. Cách tạo dictionary trong PythonTrong Python, dictionary được định nghĩa trong dấu ngoặc nhọn {} với mỗi phần tử là một cặp theo dạng key:value. Key và value này có thể là bất kỳ kiểu dữ liệu nào. Bạn cũng có thể tạo dictionary bằng cách sử dụng hàm dict() được tích hợp sẵn. Ví dụ: 10Khi thực hiện kiểm tra kiểu dữ liệu của d ta được kết quả: 11Truy cập phần tử của dictionaryCác kiểu dữ liệu lưu trữ khác sử dụng index để truy cập vào các giá trị thì dictionary sử dụng các key. Key có thể được sử dụng trong cặp dấu ngoặc vuông hoặc sử dụng get(). Sử dụng khóa để trích xuất dữ liệu: 12Chạy đoạn code trên ta sẽ được kết quả: 13Thay đổi, thêm phần tử cho dictionaryDictionary có thể thay đổi, nên có thể thêm phần tử mới hoặc thay đổi giá trị của các phần tử hiện có bằng cách sử dụng toán tử gán. Nếu key đã có, giá trị sẽ được cập nhật, nếu là một cặp key: value mới thì sẽ được thêm thành phần tử mới. 14Xóa phần tử từ dictionaryBạn có thể xóa phần tử cụ thể của dictionary bằng cách sử dụng pop(), nó sẽ phần tử có key đã cho và trả về giá trị của phần tử. popitem() có thể xóa và trả về một phần tử tùy ý dưới dạng (key, value). Tất cả các phần tử trong dictionary có thể bị xóa cùng lúc bằng cách dùng clear(). Ngoài ra, từ khóa del cũng có thể dùng để xóa một phần tử hoặc toàn bộ dictionary. 15Các phương thức và hàm cho dictionaryĐây là những phương thức thường dùng với dictionary: MethodMô tảclear()Xóa tất cả phần tử của dictionary.copy()Trả về một bản sao shollow copy của dictionary.fromkeys(seq[,v])Trả về dictionary mới với key từ seq và value bằng v (default là 69).get(key[,d])Trả về giá trị của key, nếu key không tồn tại, trả về d. (default là 69).items()Trả lại kiểu xem mới của các phần tử trong dictionary (key, value).keys()Trả về kiểu xem mới của các key trong dictionary.pop(key[,d])Xóa phần tử bằng key và trả về giá trị hoặc d nếu key không tìm thấy. Nếu d không được cấp, key không tồn tại thì sẽ tạo lỗi 71.popitem()Xóa và trả về phần tử bất kỳ ở dạng (key, value). Tạo lỗi 71 nếu dictionary rỗng.setdefault(key,[,d])Nếy key tồn tại trả về value của nó, nếu không thêm key với value là d và trả về d (default là 69).update([other])Cập nhật dictionary với cặp key/value từ other, ghi đè lên các key đã có.values()Trả về kiểu view mới của value trong dictionary.Các hàm tích hợp như all(), any(), len(), cmp(), sorted(),... thường được sử dụng với dictionary để thực hiện những nhiệm vụ khác nhau. Dictionary comprehension trong PythonDictionary comprehension là cách đơn giản, rút gọn để tạo dictionary mới từ một vòng lặp trong Python. Câu lệnh sẽ bao gồm một cặp biểu thức (key:value) cùng câu lệnh for, tất cả đặt trong dấu {}. Dưới đây là ví dụ tạo dictionary với mỗi pahàn tử là một cặp số và lập phương của nó. 16Chương trình trên tương đương với 17Bạn cũng có thể sử dụng lệnh if trong dictionary comprehension. Lệnh if có thể lọc những phần tử trong dictionary hiện có để tạo thành dictionary mới như ví dụ dưới đây: 18Kiểm tra và lặp qua phần tử trong dictionaryBạn chỉ có thể kiểm tra key của phần tử đã có trong dictionary hay chưa bằng cách dùng in, và không thể làm điều đó với value. 19Bạn có thể sử dụng vòng lặp for để lặp qua key của các phần tử trong dictionary. 20Chạy code trên, các giá trị tương ứng với từng key sẽ được in ra màn hình theo thứ tự của key. 8. Chuyển đổi giữa các kiểu dữ liệuChúng ta có thể chuyển đổi giữa các kiểu dữ liệu khác nhau bằng cách sử dụng hàm chuyển đổi kiểu khác nhau như int() (kiểu số nguyên), float() số thập phân, str() chuỗi,... Ví dụ: 21Chuyển đổi từ kiểu float sang kiểu int sẽ bị giảm giá trị (làm cho nó gần với số không hơn). Ví dụ: 22Chuyển đổi từ string sang hoặc ngược lại phải có các giá trị tương thích. Bạn có thể thực hiện chuyển đổi chuỗi này sang chuỗi khác: 23Để chuyển đổi sang dictionary, mỗi phần tử phải là một cặp như ví dụ dưới đây: 249. Bước đầu tiên hướng tới lập trìnhTất nhiên, chúng ta có thể sử dụng Python cho những tác vụ phức tạp hơn là thêm vài phần tử vào chuỗi. Ví dụ, có thể viết một chuỗi con của dãy Fibonacci (dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1 hoặc 1 và 1, các phần tử sau đó được thiết lập bằng cách cộng hai phần tử trước nó lại) như sau: 25Ví dụ này giới thiệu một số tính năng mới:
26Có thể sử dụng thêm đối số end cho hàm print() để tránh thêm dòng mới trong kết quả đầu ra hoặc kết thúc kết quả với một chuỗi khác: 27Đến đây các bạn đã bắt đầu hình dung được phần nào về Python rồi đúng không? Hãy cùng chờ đón những bài học tiếp theo về các câu lệnh, cấu trúc dữ liệu trong Python nhé.
Thứ Tư, 28/12/2022 17:03 4,7 ★ 44 👨 270.643 #Python 3 Bình luận Sắp xếp theo Xóa Đăng nhập để Gửi
Bạn nên đọc
Python
Python 3
Giới thiệu | Điều khoản | Bảo mật | Hướng dẫn | Ứng dụng | Liên hệ | Quảng cáo | Facebook | Youtube | DMCA Giấy phép số 362/GP-BTTTT. Bộ Thông tin và Truyền thông cấp ngày 30/06/2016. Cơ quan chủ quản: CÔNG TY CỔ PHẦN MẠNG TRỰC TUYẾN META. Địa chỉ: 56 Duy Tân, Dịch Vọng Hậu, Cầu Giấy, Hà Nội. Điện thoại: 024 2242 6188. Email: [email protected]. Chịu trách nhiệm nội dung: Lê Ngọc Lam. Bản quyền © 2003-2023 QuanTriMang.com. Giữ toàn quyền. Không được sao chép hoặc sử dụng hoặc phát hành lại bất kỳ nội dung nào thuộc QuanTriMang.com khi chưa được phép. |