Kiểu dữ liệu trong Python

15
Lập trình Python

Biến 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ệ.

# Gán 1 giá trị:
s = "Hồng"
a = 3
b = 5.5
# Gán nhiều giá trị:
s, a, b = "Thảo", 55, 3.75

Các kiểu dữ liệu số trong Python

Python 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ố j hoặc J để chỉ phần ảo. Ví dụ: 3+5j. Ngoài int và float, Python hỗ trợ thêm 2 loại số nữa là Decimal và Fraction.

Ta sẽ dùng hàm type() để kiểm tra xem biến hoặc giá trị thuộc lớp số nào và hàm isinstance() để kiểm tra xem chúng có thuộc về một class cụ thể nào không.

a = 9

# Output: <class 'int'>
print(type(a))

# Output: <class 'float'>
print(type(5.0))

# Output: (10+2j)
b = 8 + 2j
print(b + 2)

# Kiểm tra xem b có phải là số phức không
# Output: True
print(isinstance(b, complex)) 

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ố đó.

Chuỗi (string) trong Python

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.

Đây là danh sách tất cả các ký tự thoát (escape sequence) được Python hỗ trợ:

Escape Sequence Mô tả
\newline Dấu gạch chéo ngược và dòng mới bị bỏ qua
\\ Dấu gạch chéo ngược
\’ Dấu nháy đơn
\” Dấu nháy kép
\a

ASCII Bell

\b ASCII Backspace
\f ASCII Formfeed
\n ASCII Linefeed
\r ASCII Carriage Return
\t ASCII Horizontal Tab
\v ASCII Vertical Tab
\ooo Ký tự có giá trị bát phân là ooo
\xHH Ký tự có giá trị thập lục phân là HH

Danh sách (list) trong Python

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 Python

Trong 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.

Phương thức list trong Python

Những phương thức có sẵn cho list trong Python gồm:

  • append(): Thêm phần tử vào cuối list.
  • extend(): Thêm tất cả phần tử của list hiện tại vào list khác.
  • insert(): Chèn một phần tử vào index cho trước.
  • remove(): Xóa phần tử khỏi list.
  • pop(): Xóa phần tử khỏi list và trả về phần tử tại index đã cho.
  • clear(): Xóa tất cả phần tử của list.
  • index(): Trả về index của phần tử phù hợp đầu tiên.
  • count(): Trả về số lượng phần tử đã đếm được trong list như một đối số.
  • sort(): Sắp xếp các phần tử trong list theo thứ tự tăng dần.
  • reverse(): Đảo ngược thứ tự các phần tử trong list.
  • copy(): Trả về bản sao của list.

Các hàm Python tích hợp với list

Cá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.

  • all(): Trả về giá trị True nếu tất cả các phần tử của list đều là true hoặc list rỗng.
  • any(): Trả về True khi bất kỳ phần tử nào trong list là true. Nếu list rỗng hàm trả về giá trị False.
  • enumerate(): Trả về đối tượng enumerate, chứa index và giá trị của tất cả các phần tử của list dưới dạng tuple.
  • len(): Trả về độ dài (số lượng phần tử) của list.
  • list(): Chuyển đổi một đối tượng có thể lặp (tuple, string, set, dictionary) thành list.
  • max(): Trả về phần tử lớn nhất trong list.
  • min(): Trả về phần tử nhỏ nhất trong list.
  • sorted(): Trả về list mới đã được sắp xếp.
  • sum(): Trả về tổng của tất cả các phần tử trong list.

Tuple trong Python

Tuple 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 (,).

Tuple 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ư:

  • Tuple thường được sử dụng cho các kiểu dữ liệu không đồng nhất (khác nhau) và list thường sử dụng cho các kiểu dữ liệu (đồng nhất) giống nhau.
  • Vì tuple không thể thay đổi, việc lặp qua các phần tử của tuple nhanh hơn so với list. Vì vậy, trong trường hợp này tuple chiếm ưu thế về hiệu suất hơn list một chút.
  • Tuple chứa những phần tử không thay đổi, có thể được sử dụng như key cho dictionary. Với list, điều này không thể làm được.
  • Nếu có dữ liệu không thay đổi việc triển khai nó như một tuple sẽ đảm bảo rằng dữ liệu đó được bảo vệ chống ghi (write-protected).

Các hàm dùng trong tuple khá giống với list, gồm có:

  • all(): Trả về giá trị True nếu tất cả các phần tử của tuple là true hoặc tuple rỗng.
  • any(): Trả về True nếu bất kỳ phần tử nào của tuple là true, nếu tuple rỗng trả về False.
  • enumerated(): Trả về đối tượng enumerate (liệt kê), chứa cặp index và giá trị của tất cả phần tử của tuple.
  • len(): Trả về độ dài (số phần tử) của tuple.
  • max(): Trả về phần tử lớn nhất của tuple.
  • min(): Trả về phần tử nhỏ nhất của tuple.
  • sorted(): Lấy phần tử trong tuple và trả về list mới được sắp xếp (tuple không sắp xếp được).
  • sum(): Trả về tổng tất cả các phần tử trong tuple.
  • tuple(): Chuyển đổi những đối tượng có thể lặp (list, string, set, dictionary) thành tuple.

Set trong Python

Set 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ác phương thức dùng trên set

Phương thức Mô 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.

Dictionary trong Python

Dictionary 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ị.

Đây là những phương thức thường dùng với dictionary:

Method Mô 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à None).
get(key[,d]) Trả về giá trị của key, nếu key không tồn tại, trả về d. (default là None).
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 KeyError.
popitem() Xóa và trả về phần tử bất kỳ ở dạng (key, value). Tạo lỗi KeyError 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à None).
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.