5.1. Khái niệm List & Truy cập Dữ liệu
5.1.1. Khái niệm List: “Chiếc Thùng” chứa nhiều thứ
Vấn đề: Nếu muốn lưu trữ 100 địa chỉ IP, việc tạo 100 biến (
ip1,ip2, …) là không khả thi.
Ví dụ : Kệ Đựng Thiết bị 🖥️
Hãy tưởng tượng List giống như một Kệ đựng đồ trong phòng máy chủ.
| Khái niệm List | Ẩn dụ Kệ đựng Thiết bị | Mô tả |
| List (danh_sách) | Chiếc kệ Rack Server (Kệ tổng thể) | Là nơi lưu trữ tất cả các vật phẩm. |
| Phần tử | Một thiết bị cụ thể (Switch, Router, Server) | Là một đối tượng được lưu trữ trên kệ. |
| Chỉ mục (Index) | Vị trí của thiết bị trên kệ (đếm từ 0) | Vị trí 0 là thiết bị ở tầng thấp nhất. Vị trí 1 là thiết bị ở tầng thứ hai, v.v. |
Khái niệm: List (Danh sách) là một loại tập hợp dùng để lưu trữ nhiều giá trị (có thể cùng hoặc khác kiểu dữ liệu) dưới một tên biến duy nhất.
Cú pháp: List được tạo ra bằng cách đặt các giá trị bên trong dấu ngoặc vuông
[], cách nhau bởi dấu phẩy.# Ví dụ 1: Danh sách các server danh_sach_server = ["Web-01", "DB-01", "Router-A"] # Ví dụ 2: List chứa nhiều loại dữ liệu thong_tin = ["PC01", 8, 450.5, True]
Kết luận
List là một công cụ cực kỳ quan trọng vì nó cho phép chúng ta làm việc với hàng loạt dữ liệu một cách có tổ chức, thay vì phải khai báo từng biến riêng lẻ. Trong lập trình, List là nền tảng để xử lý các tập tin, database hay bất kỳ tập hợp thông tin nào.
5.1.2. Truy cập Index và Cắt List (Slicing)
Chỉ mục (Index): Mỗi phần tử trong List có một vị trí duy nhất, gọi là chỉ mục, bắt đầu từ 0.
Phần tử đầu tiên có Index là
[0].Phần tử cuối cùng có Index là
[-1](dùng số âm để đếm ngược từ cuối).
Cú pháp truy cập: Dùng tên biến List kèm chỉ mục trong ngoặc vuông.
danh_sach_server = ["Web-01", "DB-01", "Router-A"] print(danh_sach_server[0]) # Kết quả: Web-01 print(danh_sach_server[-1]) # Kết quả: Router-A # Thay đổi giá trị của một phần tử danh_sach_server[2] = "Router-B"Cắt List (Slicing): Giống như cắt chuỗi, dùng dấu hai chấm
:để lấy ra một phần của List.print(danh_sach_server[0:2]) # Kết quả: ["Web-01", "DB-01"]
5.2. Thao tác Cơ bản: Thêm, Xóa, Duyệt
5.2.1. Thêm phần tử (append() và insert())
append(phần tử): Thêm phần tử vào cuối List. Đây là cách thêm phổ biến nhất.
danh_sach = ["A", "B"] danh_sach.append("C") # Kết quả: ["A", "B", "C"]insert(index,phần tử): Thêm phần tử vào một vị trí cụ thể trong List.
danh_sach.insert(1, "X") # Thêm "X" vào vị trí Index 1 # Kết quả: ["A", "X", "B", "C"]
5.2.2. Xóa phần tử (pop() và remove())
pop(index): Xóa phần tử tại vị trí Index và trả về giá trị của phần tử đó (rất hữu ích). Nếu không truyền Index, nó xóa phần tử cuối cùng.
server_bi_xoa = danh_sach.pop(2) # Xóa "B" (ở Index 2 sau khi insert) # List: ["A", "X", "C"] # server_bi_xoa: "B"remove(giaˊ_trị): Xóa phần tử đầu tiên có giá trị tương ứng được tìm thấy trong List.
danh_sach.remove("A") # Xóa "A" # List: ["X", "C"]
5.2.3. Duyệt List bằng for
Mục đích: Để thực hiện một hành động (ví dụ: in, kiểm tra) trên tất cả các phần tử trong List.
danh_sach_ip = ["192.168.1.1", "10.0.0.1", "172.16.1.1"] # Python tự động gán từng phần tử cho biến ip for ip in danh_sach_ip: print(f"Đang kiểm tra địa chỉ IP: {ip}")
5.3. Ứng dụng Quản lý Danh sách
5.3.1. Tích hợp for và if để Tìm kiếm
Tình huống: Kiểm tra xem một thiết bị có tồn tại trong danh sách không.
# Tìm kiếm ten_thiet_bi_can_tim = input("Nhập tên thiết bị cần tìm: ") if ten_thiet_bi_can_tim in danh_sach_server: print("=> Thiết bị đã tồn tại trong danh sách.") else: print("=> Không tìm thấy thiết bị.") # Ngoài ra, có thể dùng vòng lặp để đếm so_lan_tim_thay = 0 for ten in danh_sach_server: if ten == ten_thiet_bi_can_tim: so_lan_tim_thay += 1
5.3.2. while và List: Tạo Menu Tương tác
Kết hợp whileTrue với List để tạo một chương trình quản lý đơn giản:
Hiện menu: 1. Thêm, 2. Xóa, 3. Hiển thị, 4. Thoát.
Dùng if/elif/else để xử lý lựa chọn của người dùng.
Dùng append() hoặc pop() để thao tác với List.
