Cấu trúc dữ liệu List trong Python và các thao tác cơ bản

Cấu trúc dữ liệu được sử dụng trong các chương trình để dễ dàng hơn trong việc định vị thông tin và lấy thông tin. Cấu trúc dữ liệu là cách các ngôn ngữ lập trình thể hiện các giá trị cơ bản, chúng chứa các kiểu dữ liệu cơ bản như số, chuỗi, boolean…, nó đưa ra cách thức lưu trữ nhiều giá trị trong một biến số. Cấu trúc dữ liệu cũng được sử dụng để phân nhóm và tổ chức cho các cấu trúc khác.

Để làm rõ hơn sự cần thiết các cấu trúc dữ liệu cơ bản, chúng ta có một ví dụ như sau:

friend1 = "Rolf"
friend2 = "Bob"
friend3 = "Anne"

print(friend1)
print(friend2)
print(friend3)

Một chương trình rất đơn giản với 3 biến chứa tên 3 người bạn, chúng ta in ra tên 3 người này. Tưởng tượng khi số lượng bạn gia tăng, bạn phải thêm vào hàng trăm biến và hàng trăm câu lệnh in ra màn hình. Quả là một thảm họa!

List (danh sách) là một kiểu dữ liệu cơ bản trong Python, cho phép bạn lưu trữ và quản lý một tập hợp các phần tử trong một thứ tự nhất định. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết về cấu trúc dữ liệu List trong Python, cách nó hoạt động, và cách sử dụng nó một cách hiệu quả.

Cấu trúc dữ liệu List trong Python là gì?

List trong Python là một cấu trúc dữ liệu dùng để lưu trữ và quản lý một tập hợp các phần tử theo một thứ tự nhất định. List có thể chứa nhiều giá trị khác nhau, bao gồm cả số nguyên, chuỗi, và thậm chí là các List khác.

Điểm nổi bật của List là nó có khả năng thay đổi (mutable), nghĩa là bạn có thể thêm, sửa, hoặc xóa các phần tử sau khi List đã được tạo.

List có thể được coi là một cấu trúc dữ liệu dạng mảng tuần tự  (tương tụ như vector trong C++ và ArrayList trong Java).

Một List được biểu diễn bằng cặp ngoặc vuông [] và các phần tử trong List được ngăn cách nhau bởi dấu phẩy ,. Tên của list được gán bằng cách sử dụng dấu =.

friends = ["Rolf","Bob","Anne"]
ages = [35,28,37]

Để hiển thị nội dung List chúng ta có thể dùng hàm print(). List này có thể rất dài, bạn thấy đấy, chương trình ở phần trên với 3 biến có thể viết ngắn gọn hơn.

Chú ý, một danh sách có thể chứa nhiều loại dữ liệu khác nhau nếu bạn thấy cần thiết, tuy nhiên khuyến cáo nên dừng một loại dữ liệu thống nhất cho các phần tử trong danh sách.

friends = ["Rolf",2,"Anne"]

Định nghĩa danh sách này có cả số 2 bên trong danh sách friends, nó rất tối nghĩa, không có người bạn nào tên là 2 cả.

  Biến và kiểu dữ liệu cơ bản trong Python
  Kiểu dữ liệu Boolean và toán tử logic AND, OR, NOT trong Python

Tính chất của List

  • Các phần tử trong List được lưu trữ theo thứ tự mà chúng được thêm vào và sẽ không thay đổi. Nếu thêm phần tử mới vào list thì phần tử đó sẽ xuất hiện ở cuối danh sách. Bạn có thể truy cập các phần tử bằng cách sử dụng chỉ số (index) của chúng, với chỉ số đầu tiên là 0.
  • List được sắp xếp nhất định, các phần tử sẽ có một thứ tự xác định và  sẽ không thay đổi. Nếu thêm phần tử mới vào list thì phần tử đó sẽ xuất hiện ở cuối danh sách.
  • Không giống như chuỗi (string) trong Python, List có thể thay đổi, nghĩa là bạn có thể sửa đổi, thêm, hoặc xóa các phần tử trong List sau khi nó đã được tạo.
  • Chứa các phần tử có kiểu dữ liệu khác nhau: Một List có thể chứa các phần tử với các kiểu dữ liệu khác nhau, chẳng hạn như số nguyên, chuỗi, và thậm chí là các List khác.
  • List cho phép các phần tử trùng lặp, có nghĩa là một giá trị có thể xuất hiện nhiều lần trong list.

Các thao tác với List trong Python

Khởi tạo List

Trong Python, việc khởi tạo một List rất đơn giản và có thể được thực hiện bằng cách sử dụng cặp ngoặc vuông []. Bạn có thể tạo một List chứa các phần tử với nhiều kiểu dữ liệu khác nhau, chẳng hạn như số nguyên, chuỗi, số thực, hoặc thậm chí là một List khác.

# Khởi tạo một List rỗng
empty_list = []

# Khởi tạo List với các phần tử
numbers = [1, 2, 3, 4, 5]
fruits = ["apple", "banana", "cherry"]
mixed = [1, "hello", 3.14, True]

Xác định độ dài của List

Bạn có thể dễ dàng lấy độ dài (số phần tử) của một List bằng cách sử dụng hàm tích hợp len() trong Python. Đây là một thao tác cơ bản và rất hữu ích khi bạn cần biết số lượng phần tử trong List.

fruits = ["apple", "banana", "cherry"]
length = len(fruits)
print(length) 

# Output: 3

Sắp xếp List

Python cung cấp phương thức sort() và hàm sorted() để sắp xếp các phần tử trong List. Phương thức sort() sẽ sắp xếp List tại chỗ (thay đổi List ban đầu), trong khi sorted() sẽ trả về một List mới đã được sắp xếp mà không thay đổi List ban đầu.

Ví dụ sử dụng sort():

numbers = [3, 1, 4, 1, 5, 9]
numbers.sort()
print(numbers)  # Output: [1, 1, 3, 4, 5, 9]

Ví dụ sử dụng sorted():

numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # Output: [1, 1, 3, 4, 5, 9]

Trích lọc List

Trong Python, bạn có thể trích lọc một phần của List bằng cách sử dụng cú pháp slicing (cắt lát). Cú pháp này sử dụng dấu hai chấm : để xác định phạm vi chỉ số mà bạn muốn trích lọc.

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

# Trích lọc từ phần tử thứ 2 đến thứ 5 (không bao gồm phần tử thứ 5)
sublist = numbers[2:5]
print(sublist)  # Output: [2, 3, 4]

# Trích lọc từ phần tử thứ 3 đến hết List
sublist = numbers[3:]
print(sublist)  # Output: [3, 4, 5, 6, 7, 8, 9]

Truy xuất phần tử trong List

list_name[element_position]

Bạn có thể truy cập các phần tử trong List bằng cách sử dụng index của chúng. Chỉ số trong List bắt đầu từ 0 cho phần tử đầu tiên.

fruits = ["apple", "banana", "cherry"]
print(fruits[0])  # Output: apple
print(fruits[1])  # Output: banana
print(fruits[2])  # Output: cherry

# Truy cập phần tử từ cuối List bằng chỉ số âm
print(fruits[-1])  # Output: cherry
print(fruits[-2])  # Output: banana
Thay đổi giá trị phần tử trong List

Vì List trong Python là có thể thay đổi (mutable), bạn có thể thay đổi giá trị của bất kỳ phần tử nào bằng cách truy cập vào phần tử đó thông qua chỉ số và gán cho nó một giá trị mới.

fruits = ["apple", "banana", "cherry"]

# Thay đổi giá trị của phần tử thứ hai
fruits[1] = "mango"
print(fruits)  # Output: ["apple", "mango", "cherry"]

Chú ý, nếu bạn truy xuất đến một phần tử không có trong danh sách, một lỗi sẽ xuất hiện có dạng “index out of range”. Ví dụ như các phần tử trong danh sách fruits có vị trí tương ứng là 0, 1, 2. Nếu bạn truy xuất đến phần tử có vị trí lớn hơn 2 sẽ gặp lỗi “index out of range”.

Thêm phần tử vào List

Có nhiều cách để thêm phần tử vào List trong Python, chẳng hạn như sử dụng các phương thức append(), insert(), và extend().

  • append(): Thêm một phần tử vào cuối List.
    fruits = ["apple", "banana", "cherry"]
    fruits.append("orange")
    print(fruits)  # Output: ["apple", "banana", "cherry", "orange"]
    
  • insert(): Thêm một phần tử vào vị trí xác định trong List.
    fruits.insert(1, "mango")
    print(fruits)  # Output: ["apple", "mango", "banana", "cherry"]
    
  • extend(): Thêm nhiều phần tử từ một List khác vào cuối List hiện tại.
    more_fruits = ["pineapple", "grape"]
    fruits.extend(more_fruits)
    print(fruits)  # Output: ["apple", "banana", "cherry", "pineapple", "grape"]
    

>> Xem thêm: Thao tác List Append trong Python

Xóa phần tử khỏi List

Bạn có thể xóa phần tử khỏi List bằng cách sử dụng các phương thức như remove(), pop(), và clear().

  • remove(): Xóa phần tử đầu tiên khớp với giá trị cho trước.
    fruits = ["apple", "banana", "cherry", "banana"]
    fruits.remove("banana")
    print(fruits)  # Output: ["apple", "cherry", "banana"]
    
  • pop(): Xóa phần tử tại vị trí xác định (mặc định là phần tử cuối) và trả về phần tử đó.
    last_fruit = fruits.pop()
    print(last_fruit)  # Output: "banana"
    print(fruits)  # Output: ["apple", "cherry"]
    
  • clear(): Xóa toàn bộ phần tử trong List.
    fruits.clear()
    print(fruits)  # Output: [] 

Xem thêm các cơ hội tuyển dụng Python Hà Nội hấp dẫn trên TopDev

Toán tử in

Toán tử in cho phép bạn kiểm tra một phần tử có nằm trong một danh sách hay không. Ví dụ: Kiểm tra xem “Anne” có trong danh sách friends không?

friends = ["Rolf","Bob","Anne"]
has_anne = "Anne" in friends
print(has_anne) #Kết quả là True

Xem thêm các cơ hội tuyển dụng Python hấp dẫn trên TopDev

Một số hàm và phương thức list trong Python

Một số hàm và phương thức list trong Python

Dưới đây là một số hàm và phương thức phổ biến của List trong Python, giúp bạn thao tác với danh sách một cách hiệu quả:

Hàm thao tác với list trong Python

  • len(): Trả về số lượng phần tử trong List.
  • min(): Trả về phần tử nhỏ nhất trong List.
  • max(): Trả về phần tử lớn nhất trong List.
  • sum(): Tính tổng các phần tử trong List (dành cho List chứa các số).
  • sorted(): Trả về một List mới đã được sắp xếp mà không thay đổi List ban đầu.

Phương thức thao tác trên List

  • append(): Thêm một phần tử vào cuối List.
  • extend(): Thêm nhiều phần tử từ một List khác vào cuối List hiện tại.
  • insert(): Thêm một phần tử vào vị trí cụ thể trong List.
  • remove(): Xóa phần tử đầu tiên khớp với giá trị được chỉ định.
  • pop(): Xóa và trả về phần tử tại một vị trí xác định (hoặc phần tử cuối).
  • clear(): Xóa toàn bộ phần tử trong List.
  • index(): Trả về chỉ số của phần tử đầu tiên khớp với giá trị được chỉ định.
  • count(): Đếm số lần một phần tử xuất hiện trong List.
  • reverse(): Đảo ngược thứ tự các phần tử trong List.
  • copy(): Trả về một bản sao của List.
  • sort(): Sắp xếp các phần tử trong List tại chỗ.

Các hàm toán học và logic với List

  • any(): Trả về True nếu có bất kỳ phần tử nào trong List là True.
  • all(): Trả về True nếu tất cả các phần tử trong List đều là True.

Qua bài viết này, TopDev đã cung cấp khái niệm List trong Python và các tính chất cũng như các thao tác sử dụng. List cung cấp nhiều tính năng mạnh mẽ để lưu trữ, quản lý và thao tác với dữ liệu. Từ việc khởi tạo, truy cập, sắp xếp, đến các thao tác phức tạp như thêm, xóa, trích lọc và tìm kiếm, Python cung cấp rất nhiều công cụ hữu ích giúp bạn làm việc với List một cách hiệu quả.

Xem thêm một số kiểu dữ liệu khác như Tuple và Set trong Python:

Xem thêm việc làm IT hấp dẫn trên TopDev