Bài 1.12. List trong Python

Một danh sách (list) là một tập hợp các mục theo một thứ tự cụ thể. Bạn có thể tạo một danh sách bao gồm các chữ cái của bảng chữ cái, các chữ số từ 0 đến 9, hoặc tên của tất cả mọi người trong gia đình bạn. Bạn có thể đặt bất cứ thứ gì bạn muốn vào một danh sách, và các mục trong danh sách của bạn không cần phải liên quan đến nhau theo bất kỳ cách nào. Vì một danh sách thường chứa nhiều hơn một phần tử, nên tốt nhất là đặt tên danh sách của bạn ở dạng số nhiều, chẳng hạn như letters, digits, hoặc names.

Trong Python, dấu ngoặc vuông ([]) chỉ ra một danh sách, và các phần tử riêng lẻ trong danh sách được tách nhau bằng dấu phẩy. Dưới đây là một ví dụ đơn giản về một danh sách chứa một vài loại xe đạp:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)

Nếu bạn yêu cầu Python in một danh sách, Python sẽ trả về biểu diễn của danh sách đó, bao gồm cả dấu ngoặc vuông:

['trek', 'cannondale', 'redline', 'specialized']

Vì đây không phải là đầu ra bạn muốn người dùng của mình thấy, hãy học cách truy cập các mục riêng lẻ trong một danh sách.

Truy cập các phần tử trong danh sách

Danh sách là các tập hợp có thứ tự, vì vậy bạn có thể truy cập bất kỳ phần tử nào trong danh sách bằng cách cho Python biết vị trí, hoặc chỉ số, của mục mong muốn. Để truy cập một phần tử trong danh sách, viết tên của danh sách theo sau là chỉ số của mục được bao quanh bởi dấu ngoặc vuông.

Ví dụ, hãy lấy ra chiếc xe đạp đầu tiên trong danh sách bicycles:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])

Khi chúng ta yêu cầu một mục duy nhất từ một danh sách, Python chỉ trả về phần tử đó mà không có dấu ngoặc vuông:

trek

Đây là kết quả bạn muốn người dùng của mình thấy: đầu ra sạch sẽ, được định dạng gọn gàng.

Bạn cũng có thể sử dụng các phương thức chuỗi từ Chương 2 trên bất kỳ phần tử nào trong danh sách này. Ví dụ, bạn có thể định dạng phần tử 'trek' để trông đẹp mắt hơn bằng cách sử dụng phương thức title():

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0].title())

Ví dụ này tạo ra cùng một đầu ra như ví dụ trước, ngoại trừ 'Trek' được viết hoa.

Vị trí chỉ số bắt đầu từ 0, không phải 1

Python coi mục đầu tiên trong một danh sách ở vị trí 0, không phải vị trí 1. Điều này đúng với hầu hết các ngôn ngữ lập trình, và lý do liên quan đến cách các phép toán danh sách được thực hiện ở mức độ thấp hơn. Nếu bạn nhận được kết quả không mong muốn, hãy tự hỏi liệu bạn có đang mắc lỗi phổ biến nhưng đơn giản là lệch một không.

Mục thứ hai trong một danh sách có chỉ số là 1. Sử dụng hệ thống đếm này, bạn có thể lấy bất kỳ phần tử nào bạn muốn từ một danh sách bằng cách trừ đi một từ vị trí của nó trong danh sách. Ví dụ, để truy cập mục thứ tư trong một danh sách, bạn yêu cầu mục ở chỉ số 3.

Dưới đây là yêu cầu các xe đạp ở chỉ số 1 và chỉ số 3:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[3])

Mã này trả về chiếc xe đạp thứ hai và thứ tư trong danh sách:

cannondale
specialized

Python có một cú pháp đặc biệt để truy cập phần tử cuối cùng trong một danh sách. Nếu bạn yêu cầu mục ở chỉ số -1, Python luôn trả về mục cuối cùng trong danh sách:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])

Mã này trả về giá trị 'specialized'. Cú pháp này khá hữu ích, vì bạn sẽ thường muốn truy cập các mục cuối cùng trong một danh sách mà không cần biết chính xác danh sách dài bao nhiêu. Quy ước này cũng mở rộng đến các giá trị chỉ số âm khác. Chỉ số -2 trả về mục thứ hai từ cuối danh sách, chỉ số -3 trả về mục thứ ba từ cuối, và cứ tiếp tục như vậy.

Sử dụng các giá trị riêng lẻ từ một danh sách

Bạn có thể sử dụng các giá trị riêng lẻ từ một danh sách giống như bạn sử dụng bất kỳ biến nào khác. Ví dụ, bạn có thể sử dụng chuỗi f để tạo ra một thông báo dựa trên một giá trị từ một danh sách.

Hãy thử lấy chiếc xe đạp đầu tiên từ danh sách và tạo ra một thông báo sử dụng giá trị đó:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = f"My first bicycle was a {bicycles[0].title()}."
print(message)

Chúng ta xây dựng một câu sử dụng giá trị tại bicycles[0] và gán nó cho biến message. Đầu ra là một câu đơn giản về chiếc xe đạp đầu tiên trong danh sách:

My first bicycle was a Trek.

Bài tập ví dụ: Quản lý danh sách sinh viên

Mô tả:

Xây dựng chương trình quản lý danh sách sinh viên với các thao tác:

  • Thêm sinh viên (add)
  • Xóa sinh viên (remove)
  • Sửa tên sinh viên theo chỉ số (edit)
  • Hiển thị danh sách (show)

Input:
  • Dòng 1: Số nguyên n (1 ≤ n ≤ 100) – số thao tác
  • n dòng tiếp theo là các lệnh:
    • "add x": thêm sinh viên tên x vào cuối danh sách
    • "remove x": xóa sinh viên tên x khỏi danh sách
    • "edit i x": sửa tên sinh viên ở vị trí i (bắt đầu từ 0) thành x
    • "show": hiển thị danh sách sinh viên
Output:
  • Với mỗi lệnh show, in ra danh sách sinh viên hiện tại, mỗi sinh viên một dòng
  • Nếu danh sách rỗng, in ra "Empty"

Ví dụ:

Input

6
add Hoa
add Nam
show
remove Hoa
add Minh
show

Output

Hoa
Nam
Nam
Minh

Hướng dẫn giải:
  1. Tạo danh sách rỗng ds = [].
  2. Với mỗi dòng lệnh:
    • Nếu là "add x" → dùng append()
    • Nếu là "remove x" → dùng remove() nếu x tồn tại
    • Nếu là "edit i x" → chuyển i thành int rồi gán ds[i] = x nếu chỉ số hợp lệ
    • Nếu là "show" → in từng phần tử hoặc "Empty" nếu danh sách trống

Code Python:
n = int(input())
ds = []

for _ in range(n):
    command = input().split()

    if command[0] == "add":
        ds.append(command[1])
    elif command[0] == "remove":
        if command[1] in ds:
            ds.remove(command[1])
    elif command[0] == "edit":
        i = int(command[1])
        if 0 <= i < len(ds):
            ds[i] = command[2]
    elif command[0] == "show":
        if ds:
            for ten in ds:
                print(ten)
        else:
            print("Empty")

Ghi chú:
  • Chỉ sửa khi chỉ số i hợp lệ.
  • Lệnh remove không gây lỗi nếu tên không tồn tại.

Làm thêm nhiều bài tập miễn phí tại đây

Comments

There are no comments at the moment.