Bài 1.12. List trong Python

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ênx
vào cuối danh sách"remove x"
: xóa sinh viên tênx
khỏi danh sách"edit i x"
: sửa tên sinh viên ở vị tríi
(bắt đầu từ 0) thànhx
"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:
- Tạo danh sách rỗng
ds = []
. - Với mỗi dòng lệnh:
- Nếu là
"add x"
→ dùngappend()
- Nếu là
"remove x"
→ dùngremove()
nếu x tồn tại - Nếu là
"edit i x"
→ chuyểni
thànhint
rồi gánds[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
- Nếu là
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.
Comments