Bài 9.4 - Ôn tập list Python nâng cao

List (danh sách) là kiểu dữ liệu vô cùng linh hoạt và được sử dụng rộng rãi trong Python. Trong bài này, chúng ta sẽ ôn tập các kỹ thuật nâng cao hơn với list để có thể xử lý dữ liệu một cách hiệu quả hơn.


1. Slicing nâng cao

Slicing cho phép bạn lấy một phần của danh sách dựa trên chỉ số.

numbers = [0, 1, 2, 3, 4, 5, 6]
print(numbers[2:5])    # [2, 3, 4]
print(numbers[:3])     # [0, 1, 2]
print(numbers[::2])    # [0, 2, 4, 6]
print(numbers[::-1])   # [6, 5, 4, 3, 2, 1, 0]

Slicing rất tiện để thao tác nhanh với chuỗi và danh sách.


2. List comprehension (cực kỳ quan trọng)

squares = [x*x for x in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]

Thêm điều kiện:

evens = [x for x in range(10) if x % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8]

List comprehension giúp viết code ngắn gọn, dễ đọc.


3. Duyệt danh sách với enumeratezip

fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits):
    print(i, fruit)
names = ["An", "Bình", "Cường"]
scores = [85, 90, 95]
for name, score in zip(names, scores):
    print(name, ":", score)

enumerate để lấy cả chỉ số, zip để gộp nhiều danh sách cùng lúc.


4. Hàm sorted() và sắp xếp theo điều kiện

nums = [5, 2, 9, 1]
print(sorted(nums))              # [1, 2, 5, 9]
print(sorted(nums, reverse=True))  # [9, 5, 2, 1]

Sắp xếp theo độ dài chuỗi:

words = ["apple", "cat", "banana"]
print(sorted(words, key=len))  # ['cat', 'apple', 'banana']

5. Một số hàm hữu ích khác với list

lst = [3, 1, 4, 1, 5]

print(len(lst))     # Số phần tử
print(max(lst))     # Phần tử lớn nhất
print(min(lst))     # Phần tử nhỏ nhất
print(sum(lst))     # Tổng các phần tử

Đây là các hàm tích hợp có sẵn, chạy rất nhanh và gọn.


6. Xử lý danh sách 2 chiều

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix:
    for val in row:
        print(val, end=" ")
    print()

List comprehension 2 chiều:

squared = [[x*x for x in row] for row in matrix]
print(squared)

7. Xoá, thêm phần tử nâng cao

lst = [1, 2, 3, 4, 5]

# Xoá phần tử ở vị trí 2
del lst[2]
print(lst)  # [1, 2, 4, 5]

# Xoá tất cả số chẵn
lst = [x for x in lst if x % 2 != 0]
print(lst)  # [1, 5]

# Thêm nhiều phần tử
lst.extend([6, 7])
print(lst)  # [1, 5, 6, 7]

8. Ví dụ tổng hợp

Bài toán: Cho danh sách các số, giữ lại bình phương các số chẵn và sắp xếp giảm dần.
nums = [1, 2, 3, 4, 5, 6]

result = sorted([x*x for x in nums if x % 2 == 0], reverse=True)
print(result)  # [36, 16, 4]

Tổng kết

  • Danh sách trong Python là công cụ cực mạnh, dùng tốt sẽ giúp bạn viết code ngắn hơn, hiệu quả hơndễ mở rộng hơn.
  • Các kỹ thuật như list comprehension, zip, enumerate, sort có điều kiện, và duyệt 2 chiều rất thường gặp trong thực tế và phỏng vấn.

Comments

There are no comments at the moment.