Cấu Trúc Dữ Liệu: List, Tuple, Set, Dictionary

0 0 0

Người đăng: Better Bytes Academy

Theo Viblo Asia

Ở bài trước, chúng ta đã làm chủ việc điều khiển luồng chương trình bằng câu điều kiện và vòng lặp. Giờ là lúc khám phá các cấu trúc dữ liệu (data structures) mạnh mẽ mà Python cung cấp. Chúng là những vũ khí lợi hại giúp bạn tổ chức, lưu trữ và thao tác dữ liệu một cách hiệu quả.

Trong bài viết này, chúng ta sẽ tìm hiểu về bốn cấu trúc dữ liệu quan trọng nhất trong Python: List, Tuple, Set và Dictionary.

1. List (Danh Sách) hay gọi là Mảng

List là một danh sách có thứ tự các phần tử. List có thể chứa các phần tử có kiểu dữ liệu khác nhau, và các phần tử trong list có thể thay đổi được (mutable).

Cú Pháp:

my_list = [phan_tu_1, phan_tu_2, ..., phan_tu_n]

Ví dụ:

fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed_list = [1, "hello", 3.14, True]

Các Thao Tác Với List:

  • Truy cập phần tử: Sử dụng chỉ số (index) để truy cập phần tử trong list. Chỉ số bắt đầu từ 0.

    fruits = ["apple", "banana", "cherry"]
    print(fruits[0]) # Output: apple
    print(fruits[1]) # Output: banana
    
  • Sửa đổi phần tử: Gán giá trị mới cho phần tử tại một chỉ số.

    fruits = ["apple", "banana", "cherry"]
    fruits[1] = "orange"
    print(fruits) # Output: ['apple', 'orange', 'cherry']
    
  • Thêm phần tử:

    • append(): Thêm phần tử vào cuối list.
    • insert(): Thêm phần tử vào vị trí chỉ định.
    fruits = ["apple", "banana", "cherry"]
    fruits.append("grape")
    print(fruits) # Output: ['apple', 'banana', 'cherry', 'grape'] fruits.insert(1, "kiwi")
    print(fruits) # Output: ['apple', 'kiwi', 'banana', 'cherry', 'grape']
    
  • Xóa phần tử:

    • remove(): Xóa phần tử có giá trị chỉ định.
    • pop(): Xóa phần tử tại chỉ số chỉ định.
    • del: Xóa phần tử hoặc slice của list.
    • clear(): Xóa tất cả các phần tử trong list.
    fruits = ["apple", "banana", "cherry", "banana"]
    fruits.remove("banana") # Chỉ xóa banana đầu tiên
    print(fruits) # Output: ['apple', 'cherry', 'banana'] fruits.pop(1) # Xóa phần tử tại chỉ số 1 (cherry)
    print(fruits) # Output: ['apple', 'banana'] del fruits[0] # Xóa phần tử tại chỉ số 0 (apple)
    print(fruits) # Output: ['banana'] fruits.clear() # Xóa tất cả các phần tử
    print(fruits) # Output: []
    
  • Slice list: Tạo một list mới chứa một phần của list ban đầu.

    numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(numbers[2:5]) # Output: [2, 3, 4]
    print(numbers[:3]) # Output: [0, 1, 2]
    print(numbers[5:]) # Output: [5, 6, 7, 8, 9]
    print(numbers[::2]) # Output: [0, 2, 4, 6, 8] (bước nhảy 2)
    print(numbers[::-1]) # Output: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (đảo ngược list)
    

2. Tuple (Bộ)

Tuple tương tự như list, nhưng các phần tử trong tuple không thể thay đổi được (immutable). Tuple thường được sử dụng để lưu trữ các dữ liệu không thay đổi.

Cú Pháp:

my_tuple = (phan_tu_1, phan_tu_2, ..., phan_tu_n)

Ví dụ:

coordinates = (10, 20)
rgb_color = (255, 0, 0)

Các Thao Tác Với Tuple:

  • Truy cập phần tử: Tương tự như list, sử dụng chỉ số (index).

    coordinates = (10, 20)
    print(coordinates[0]) # Output: 10
    
  • Không thể sửa đổi phần tử: Bạn sẽ nhận được lỗi nếu cố gắng sửa đổi một tuple.

    coordinates = (10, 20)
    # coordinates[0] = 15 # Lỗi: TypeError: 'tuple' object does not support item assignment
    
  • Tuple slicing: Tương tự như list.

3. Set (Tập Hợp)

Set là một tập hợp không có thứ tự các phần tử duy nhất (không trùng lặp). Set thường được sử dụng để loại bỏ các phần tử trùng lặp và thực hiện các phép toán tập hợp.

Cú Pháp:

my_set = {phan_tu_1, phan_tu_2, ..., phan_tu_n}

Ví dụ:

numbers = {1, 2, 3, 4, 5}
letters = {"a", "b", "c"}

Các Thao Tác Với Set:

  • Thêm phần tử:

    • add(): Thêm một phần tử.
    • update(): Thêm nhiều phần tử từ một iterable (list, tuple, set...).
    numbers = {1, 2, 3}
    numbers.add(4)
    print(numbers) # Output: {1, 2, 3, 4} numbers.update([5, 6, 7])
    print(numbers) # Output: {1, 2, 3, 4, 5, 6, 7}
    
  • Xóa phần tử:

    • remove(): Xóa một phần tử (gây ra lỗi nếu phần tử không tồn tại).
    • discard(): Xóa một phần tử (không gây ra lỗi nếu phần tử không tồn tại).
    • pop(): Xóa và trả về một phần tử ngẫu nhiên.
    • clear(): Xóa tất cả các phần tử.
    numbers = {1, 2, 3, 4}
    numbers.remove(3)
    print(numbers) # Output: {1, 2, 4} numbers.discard(5) # Không gây ra lỗi nếu 5 không tồn tại
    print(numbers) # Output: {1, 2, 4} numbers.pop() # Xóa một phần tử ngẫu nhiên
    print(numbers) numbers.clear()
    print(numbers) # Output: set()
    
  • Các phép toán tập hợp:

    • union() hoặc |: Hợp của hai set.
    • intersection() hoặc &: Giao của hai set.
    • difference() hoặc -: Hiệu của hai set.
    • symmetric_difference() hoặc ^: Hiệu đối xứng của hai set (các phần tử chỉ thuộc một trong hai set).
    set1 = {1, 2, 3}
    set2 = {3, 4, 5} print(set1.union(set2)) # Output: {1, 2, 3, 4, 5}
    print(set1 | set2) # Output: {1, 2, 3, 4, 5} print(set1.intersection(set2)) # Output: {3}
    print(set1 & set2) # Output: {3} print(set1.difference(set2)) # Output: {1, 2}
    print(set1 - set2) # Output: {1, 2} print(set1.symmetric_difference(set2)) # Output: {1, 2, 4, 5}
    print(set1 ^ set2) # Output: {1, 2, 4, 5}
    

4. Dictionary (Từ Điển)

Dictionary là một tập hợp không có thứ tự các cặp key-value. Mỗi key là duy nhất trong dictionary, và key được sử dụng để truy cập value tương ứng. Dictionary thường được sử dụng để lưu trữ các dữ liệu có cấu trúc phức tạp.

Cú Pháp:

my_dict = { key_1: value_1, key_2: value_2, ..., key_n: value_n
}

Ví dụ:

person = { "name": "Alice", "age": 30, "city": "New York"
}

Các Thao Tác Với Dictionary:

  • Truy cập giá trị: Sử dụng key để truy cập giá trị tương ứng.

    person = { "name": "Alice", "age": 30, "city": "New York"
    }
    print(person["name"]) # Output: Alice
    print(person["age"]) # Output: 30
    
  • Sửa đổi giá trị: Gán giá trị mới cho key.

    person = { "name": "Alice", "age": 30, "city": "New York"
    }
    person["age"] = 31
    print(person) # Output: {'name': 'Alice', 'age': 31, 'city': 'New York'}
    
  • Thêm cặp key-value:

    person = { "name": "Alice", "age": 30, "city": "New York"
    }
    person["country"] = "USA"
    print(person) # Output: {'name': 'Alice', 'age': 30, 'city': 'New York', 'country': 'USA'}
    
  • Xóa cặp key-value:

    • del: Xóa cặp key-value bằng key.
    • pop(): Xóa cặp key-value và trả về value (gây ra lỗi nếu key không tồn tại).
    • popitem(): Xóa và trả về cặp key-value cuối cùng được thêm vào dictionary.
    • clear(): Xóa tất cả các cặp key-value.
    person = { "name": "Alice", "age": 30, "city": "New York", "country": "USA"
    }
    del person["country"]
    print(person) # Output: {'name': 'Alice', 'age': 30, 'city': 'New York'} age = person.pop("age")
    print(age) # Output: 30
    print(person) # Output: {'name': 'Alice', 'city': 'New York'} person["country"] = "USA"
    key, value = person.popitem()
    print(key, value) # Output: country USA (hoặc một key-value bất kỳ) person.clear()
    print(person) # Output: {}
    
  • Các phương thức hữu ích:

    • keys(): Trả về một view object chứa tất cả các key trong dictionary.
    • values(): Trả về một view object chứa tất cả các value trong dictionary.
    • items(): Trả về một view object chứa tất cả các cặp key-value trong dictionary.
    • get(): Trả về value tương ứng với key (trả về None nếu key không tồn tại, hoặc giá trị mặc định bạn cung cấp).
    person = { "name": "Alice", "age": 30, "city": "New York"
    } print(person.keys()) # Output: dict_keys(['name', 'age', 'city'])
    print(person.values()) # Output: dict_values(['Alice', 30, 'New York'])
    print(person.items()) # Output: dict_items([('name', 'Alice'), ('age', 30), ('city', 'New York')]) print(person.get("name")) # Output: Alice
    print(person.get("country")) # Output: None
    print(person.get("country", "Unknown")) # Output: Unknown
    

Kết luận:

Trong bài viết này, chúng ta đã khám phá các cấu trúc dữ liệu quan trọng nhất trong Python: List, Tuple, Set và Dictionary. Nắm vững kiến thức này sẽ giúp bạn tổ chức và thao tác dữ liệu một cách hiệu quả trong chương trình của mình.

Trong bài viết tiếp theo, chúng ta sẽ cùng nhau tìm hiểu về Hàm trong Python.

Bạn đã sử dụng cấu trúc dữ liệu nào trong chương trình của mình? Hãy chia sẻ với chúng tôi trong phần bình luận! Bạn có câu hỏi nào về cấu trúc dữ liệu không?

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thao tác với File trong Python

Python cung cấp các chức năng cơ bản và phương thức cần thiết để thao tác các file. Bài viết này tôi xin giới thiệu những thao tác cơ bản nhất với file trong Python.

1 1 144

- vừa được xem lúc

Tập tành crawl dữ liệu với Scrapy Framework

Lời mở đầu. Chào mọi người, mấy hôm nay mình có tìm hiểu được 1 chút về Scrapy nên muốn viết vài dòng để xem mình đã học được những gì và làm 1 demo nho nhỏ.

1 1 245

- vừa được xem lúc

Sử dụng Misoca API (oauth2) với Python

Với bài viết này giúp chúng ta có thể nắm được. ・Tìm hiểu cách xử lý API misoca bằng Python.

1 1 128

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

1 1 147

- vừa được xem lúc

Lập trình socket bằng Python

Socket là gì. Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer định danh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một cổng port (thể hiện là một con số cụ thể), từ đó tiến hành kết nối giữa client và server.

0 0 153

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 2)

Nào, chúng ta cùng đến với phần 2 của series Pandas DataFrame. Truy xuất Labels và Data. Bạn đã biết cách khởi tạo 1 DataFrame của mình, và giờ bạn có thể truy xuất thông tin từ đó. Với Pandas, bạn có thể thực hiện các thao tác sau:.

0 0 175