Chuyển đến nội dung chính

Hướng Dẫn Toàn Diện Về Danh Sách Rỗng Trong Python

Tìm hiểu các thao tác danh sách quan trọng và trường hợp sử dụng danh sách rỗng trong Python.
· 5 phút đọc

Khám phá cùng AI

Python, với các cấu trúc dữ liệu linh hoạt, nổi bật như một công cụ mạnh mẽ cho nhà phát triển và nhà khoa học dữ liệu. Trong số đó, danh sách (list) có vị trí đặc biệt nhờ tính động và dễ sử dụng. Bài viết này đi sâu vào khái niệm danh sách rỗng trong Python, khám phá cách tạo, các trường hợp sử dụng phổ biến và thao tác, tập trung vào việc cung cấp giải thích rõ ràng, từng bước kèm ví dụ thực tiễn.

Nếu bạn muốn tìm hiểu thêm về chủ đề này, hãy xem hướng dẫn Python Lists đầy đủ của chúng tôi.

Câu trả lời ngắn gọn: Cách tạo một danh sách rỗng trong Python

Nếu bạn đang vội, tạo một danh sách rỗng trong Python đơn giản như dùng dấu ngoặc vuông []. Cách ngắn gọn này vừa dễ nhớ vừa hiệu quả để khởi tạo danh sách cho các thao tác tiếp theo. Dưới đây là ví dụ tạo danh sách rỗng tên my_list và thêm (sẽ được đề cập chi tiết hơn ở phần sau) các từ ‘Python’ và ‘Rocks’ vào đó.

# Create an empty list called my_list
my_list = []
# Append the words 'Python' and 'Rocks' to it
my_list.append('Python')
my_list.append('Rocks')

# my_list is now ['Python', 'Rocks']

Tạo danh sách rỗng trong Python: Hai phương pháp nên dùng

Trong khi phần trên đã giới thiệu việc dùng dấu ngoặc vuông [] như một cách nhanh để khởi tạo danh sách rỗng, đáng để xem kỹ hơn kỹ thuật này để thấy được sự thanh lịch và hiệu quả của nó. Bên cạnh đó, Python cũng cung cấp một lựa chọn rõ ràng hơn, phù hợp với một số phong cách mã hoá và yêu cầu về tính tường minh.

Phương pháp 1: Tạo danh sách rỗng bằng []

Việc dùng dấu ngoặc vuông [] để tạo danh sách rỗng thể hiện triết lý thiết kế của Python, nhấn mạnh sự đơn giản và dễ đọc. Đây là điểm khởi đầu gọn gàng, trực quan cho các thao tác với danh sách. Sau đây là cách khởi tạo danh sách rỗng bằng []:

# Initializing an empty list with square brackets
my_empty_list = []

Phương pháp 2: Dùng hàm dựng sẵn list() của Python

Ngoài ra, Python cung cấp hàm dựng sẵn list() mà khi gọi không truyền đối số sẽ trả về một danh sách rỗng. Cách này cũng hiệu quả, dù dài dòng hơn một chút. Nó đặc biệt hữu ích khi bạn ưu tiên tính dễ đọc và tường minh của mã. Ví dụ như sau:

# Create an empty list using the list() function
my_empty_list = list()

Các thao tác phổ biến với danh sách rỗng

Hiểu cách thao tác với danh sách rỗng là điều quan trọng để lập trình Python hiệu quả. Dưới đây là một số thao tác chính bạn chắc chắn sẽ cần khi làm việc với danh sách rỗng.

Thêm phần tử vào danh sách rỗng bằng .append()

Danh sách rỗng sẽ không hữu ích lắm nếu bạn không thể thêm phần tử vào đó. Để thêm một phần tử vào cuối danh sách, chỉ cần dùng phương thức .append(). Ở đây, ví dụ, chúng ta khởi tạo một danh sách rỗng và thêm các từ ’Python’, ’Rocks!’, và ‘It’s easy to learn!’ vào danh sách my_list.

# Initialize an empty list
my_list = []

# Append elements
my_list.append('Python')
my_list.append('Rocks!')
my_list.append('It’s easy to learn!')

# `my_list` is now ['Python', 'Rocks!', 'It’s easy to learn!']

Chèn một phần tử vào vị trí cụ thể trong danh sách bằng .insert()

Một hạn chế của .append() là nó chỉ thêm phần tử ở cuối danh sách — tức là chúng ta không kiểm soát được vị trí chèn phần tử mới khi dùng .append(). Ngược lại, phương thức .insert() cho phép chúng ta làm đúng điều đó. Ở đây, ta tiếp nối ví dụ ở phần trước và chèn ’Truly’ giữa ’Python’ và ’Rocks!’. Lưu ý Python sử dụng đánh chỉ số bắt đầu từ 0, nghĩa là phần tử đầu tiên của danh sách có chỉ số 0. Xem ví dụ để biết thêm chi tiết:

# Initialize an empty list
my_list = []

# Append elements
my_list.append('Python')
my_list.append('Rocks!')
my_list.append('It’s easy to learn!')

# `my_list` is now ['Python', 'Rocks!', 'It’s easy to learn!']

# Showcase zero-based indexing in Python
my_list[0] # Returns 'Python'
my_list[1] # Returns 'Rocks'
my_list[2] # Returns 'It's easy to learn!'

# Use the .insert() method to insert ’Truly’ between ’Python’ and ’Rocks!’
my_list.insert(1, 'Truly')
# `my_list` is now ['Python', 'Truly', 'Rocks', 'It’s easy to learn!']

Thêm nhiều phần tử bằng .extend()

Trong khi các phương thức .append() và .insert() rất phù hợp để thêm từng phần tử, .extend() cho phép chúng ta thêm nhiều phần tử cùng lúc. Điều này đặc biệt hữu ích khi bạn muốn gộp hai danh sách hoặc thêm một tập hợp phần tử mà không cần lặp qua từng phần tử. Tiếp nối ví dụ trước, hãy thêm vài từ mô tả nữa vào my_list để câu của chúng ta thú vị hơn:

# Reminder that `my_list` is ['Python', 'Truly', 'Rocks', 'It’s easy to learn!']

# Extend my_list with ['and', 'fun', 'to', 'use!']
my_list.extend(['and', 'fun', 'to', 'use!'])

# `my_list` is now ['Python', 'Truly', 'Rocks!', 'It’s easy to learn!', 'and', 'fun', 'to', 'use!']

Trong ví dụ này, .extend() nhận vào một iterable (như list, set hoặc tuple) và thêm từng phần tử của nó vào cuối my_list, mở rộng câu của chúng ta hơn nữa.

Nối danh sách bằng +

Một cách khác để thêm các phần tử từ danh sách này sang danh sách khác là dùng toán tử +, để nối hai danh sách. Phương pháp này đơn giản và không sửa đổi các danh sách gốc mà tạo ra một danh sách mới. Hãy nối một danh sách mới với my_list hiện có:

# Define a new list to concatenate
additional_words = ['Python is also', 'very versatile.']

# Concatenate lists using +
complete_sentence = my_list + additional_words

# `complete_sentence` now contains the elements of both lists
# `complete_sentence` is now ['Python', 'Truly', 'Rocks!', 'It’s easy to learn!', 'and', 'fun', 'to', 'use!', 'Python is also', 'very versatile.']

Trong ví dụ này, .extend() nhận vào một iterable (như list, set hoặc tuple) và thêm từng phần tử của nó vào cuối my_list, mở rộng câu của chúng ta hơn nữa.

Sao chép danh sách bằng .copy()

Sao chép danh sách là điều cần thiết khi bạn muốn giữ nguyên danh sách gốc trước khi chỉnh sửa bản sao. Phương thức .copy() tạo một bản sao nông của danh sách, tức là nó sao chép bản thân danh sách nhưng không sao chép sâu các đối tượng bên trong. Hãy tạo một bản sao của my_list:

# Make a copy of `my_list`
my_list_copy = my_list.copy()

# Verify that `my_list_copy` is a separate object
assert my_list_copy is not my_list  # This will pass, confirming they are different objects

Dùng .copy() đảm bảo rằng các thay đổi trên danh sách sao chép sẽ không ảnh hưởng đến danh sách gốc.

Xoá sạch danh sách bằng .clear()

Đôi khi bạn sẽ cần đặt lại danh sách về trạng thái rỗng, loại bỏ toàn bộ phần tử. Phương thức .clear() cho phép bạn làm điều đó, sửa đổi trực tiếp danh sách hiện tại. Hãy xoá sạch my_list:

# Clear all elements from `my_list`
my_list.clear()

# `my_list` is now an empty list again
assert len(my_list) == 0  # This will pass, confirming the list is empty

Phương thức .clear() đặc biệt hữu ích trong những tình huống bạn cần tái sử dụng hoặc đặt lại danh sách mà không tạo đối tượng danh sách mới.

Các trường hợp sử dụng phổ biến khi khởi tạo danh sách rỗng trong Python

Danh sách rỗng đóng vai trò cần thiết trong nhiều kịch bản lập trình. Hiểu cách ứng dụng của chúng có thể cải thiện đáng kể hiệu quả viết mã và kỹ năng giải quyết vấn đề.

Lưu trữ dữ liệu một cách động trong danh sách rỗng

Trong các tình huống lượng hoặc loại dữ liệu khó dự đoán, danh sách rỗng nổi lên như những vùng chứa linh hoạt để tích luỹ thông tin một cách động. Hãy xét chương trình đọc đầu vào người dùng cho đến khi thoả mãn điều kiện cụ thể. Ở đây, chúng ta không biết sẽ có bao nhiêu lần nhập, và bằng cách dùng phương thức .append(), ta có thể thêm phần tử vào danh sách user_response một cách linh hoạt.

# Initialize an empty list to store user input
user_responses = []

# Collect user input in a loop
while True:
    response = input("Enter your response (or type 'exit' to finish): ")
    if response.lower() == 'exit':
        break
    user_responses.append(response)

# User responses are now stored in `user_responses`

Lưu trữ kết quả vào một danh sách rỗng từ vòng lặp For

Khi làm việc với vòng lặp, danh sách rỗng vô cùng hữu ích để tổng hợp kết quả sinh ra ở mỗi vòng lặp. Đây là ví dụ nơi chúng ta lưu các số chẵn khi lặp qua dải từ 0 đến 20.

# Initialize an empty list to store even numbers
even_numbers = []

# Loop through a range of numbers and store even ones
for number in range(21):  # Upper limit 21 to include 20 in the range
    if number % 2 == 0: # if remainder when divided by 2 =0, store it in empty list
        even_numbers.append(number)

# `even_numbers` now contains even numbers from 0 to 20

Lưu trữ đầu ra của hàm vào danh sách rỗng

Khi thiết kế các hàm có giá trị trả về linh hoạt, khởi tạo và trả về danh sách rỗng có thể xử lý gọn gàng các trường hợp không có kết quả. Ở đây, ví dụ, chúng ta lặp qua một danh sách từ và lưu các từ bắt đầu bằng ’A’ vào một danh sách rỗng.

def find_strings_starting_with_a(strings):
    # Initialize an empty list to store strings that start with 'A'
    strings_starting_with_a = []
    
    # Iterate over the input list and append strings that start with 'A' to `strings_starting_with_a`
    for string in strings:
        if string.startswith('A'):
            strings_starting_with_a.append(string)
    
    return strings_starting_with_a

# Example usage
result = find_strings_starting_with_a(['Assert', 'Import', 'Function', 'Array', 'Arguments'])

# 'result' will contain ['Assert', 'Array', 'Arguments']

Kết luận

Tóm lại, thành thạo danh sách rỗng và các thao tác của chúng là điều quan trọng trong lập trình Python, giúp bạn thao tác dữ liệu linh hoạt. Thông qua việc thêm, chèn, mở rộng, nối, sao chép và xoá sạch, chúng ta đã thấy cách quản lý danh sách hiệu quả trong các tình huống thực tế. Những kỹ năng nền tảng này tạo nên xương sống cho việc viết mã Python, giúp bạn giải quyết các vấn đề phức tạp hơn một cách dễ dàng và sáng tạo.

Bạn có thể tìm hiểu thêm về danh sách trong Python và nhiều hàm hữu ích khác trong lộ trình kỹ năng Python Fundamentals của chúng tôi - bắt đầu ngay hôm nay!

Adel Nehme

Tác giả

Adel Nehme

Adel là một nhà giáo dục Khoa học Dữ liệu, diễn giả, và Phó Chủ tịch phụ trách Truyền thông tại DataCamp. Adel đã phát hành nhiều khóa học và buổi đào tạo trực tiếp về phân tích dữ liệu, học máy và kỹ thuật dữ liệu. Anh đam mê lan tỏa kỹ năng dữ liệu và hiểu biết dữ liệu trong toàn tổ chức, cũng như những điểm giao thoa giữa công nghệ và xã hội. Anh có bằng Thạc sĩ Khoa học Dữ liệu và Phân tích Kinh doanh. Thời gian rảnh, bạn có thể bắt gặp anh vui đùa cùng chú mèo Louis.

Chủ đề

Liên quan