Phát triển

Bài 7: List trong Python

Trang Vũ 27-02-2024
Bài 7: List trong Python

Danh sách (list) là một trong các cấu trúc dữ liệu ổn định và hữu dụng nhất trong ngôn ngữ Python, chúng có thể được tìm thấy trong hầu hết các chương trình Python. Ở bài viết này, ta sẽ cùng nhau tìm hiểu về tầm quan trọng của list trong Python và cách làm như thế nào để vận dụng cấu trúc này một cách linh hoạt.

>>> Xem thêm các bài viết trong chuỗi bài hướng dẫn lập trình Python tại đây:

1. List trong Python

Một danh sách (list) là một tập hợp các đối tượng, đôi khi nó sẽ giống với một mảng trong nhiều loại ngôn ngữ lập trình khác nhau nhưng sẽ linh hoạt hơn.

List được định nghĩa trong Python bằng một cặp ngoặc vuông với các đối tượng ghi trong nó cách nhau bằng dấu “,”. Dưới đây là ví dụ về cách khai báo một mảng trong Python:

>>> print(arr)
['a', 'b', 'c']
>>> 

2. Các tính chất của một list trong Python

Một danh sách trong Python có các tính chất sau đây:

  • List được sắp xếp
  • List có thể chứa bất kỳ loại đối tượng không xác định nào
  • Các phần tử trong list có thể được truy cập bằng chỉ mục của nó
  • List có thể được nested với số lượng tầng không giới hạn
  • List có thể bị thay đổi
  • List là một dạng cấu trúc linh hoạt

Sau đây chúng ta sẽ đi phân tích các đặc tính này của list trong Python.

2.1. List là cấu trúc đã được sắp xếp

Một list trong Python không chỉ là một tập hợp các đối tượng, nó là một tập hợp các đối tượng được sắp xếp. Thứ tự bạn thực hiện định nghĩa các phần tử trong list sẽ được duy trì trong suốt vòng đời của nó.

>>> arr = ['a', 'd', 'c']
>>> print(arr)
['a', 'd', 'c']
>>> 

2.2. List có thể chứa các phần tử không xác định loại dữ liệu

Một list có thể chứa bất kỳ kiểu dữ liệu nào. Một list có thể chứa toàn bộ các đối tượng có cùng một kiểu dữ liệu.

>>> arr = ['a', 'd', 'c']
>>> print(arr)
['a', 'd', 'c']
>>> 

Hoặc có thể chứa các phần tử có nhiều kiểu dữ liệu khác nhau:

>>> a = [21.42, 'foobar', 3, 4, 'bark', False, 3.14159]
>>> a
[21.42, 'foobar', 3, 4, 'bark', False, 3.14159]

2.3. Các phần tử trong list có thể được truy cập bằng chỉ mục

Một phần tử riêng biệt trong list có thể được truy cập bởi việc sử dụng chỉ mục trong một cặp ngoặc vuông. 

Chúng ta có thể xét ví dụ sau:

a = ['foo', 'bar', 'baz']

Danh sách này gồm có ba phần tử, các chỉ mục của nó sẽ được trải dài từ [0,1,2], từ đây chúng ta có thể sử dụng các chỉ mục này để truy cập vào phần tử trong list. Ví dụ như:

>>> a = ['foo', 'bar', 'baz']
>>> print(a[0])
foo

2.4. List có thể được lồng bởi một list khác

Như đã biết, list có thể chứa bất kỳ kiểu dữ liệu nào. Và đúng như vậy, list hoàn toàn có thể lưu một list khác thành một phần tử của nó. Điều này được định nghĩa là nested.

>>> x = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']
>>> x
['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']

2.5. List là một đối tượng hoàn toàn có thể bị tác động

Hầu hết các kiểu dữ liệu mà chúng ta đã tìm hiểu trong loạt bài viết này là kiểu dữ liệu có tính chất atomic như integer và float. Hai kiểu dữ liệu trên là các kiểu dữ liệu nguyên thủy và không thể bị phá hủy, chúng không thể bị thay đổi một khi đã được gán cho biến.

Dĩ nhiên là, không có một ý nghĩa nào cho việc thay đổi một số nguyên như việc gán a = 3 và gán 3 = 5 đúng không nào. Trong Python, không chỉ các kiểu dữ liệu số, string trong Python cũng là một kiểu dữ liệu immutable, chúng ta không thể phá hủy một string. 
Thay đổi một phần tử trong list

>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a
['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[2] = 10
>>> a[-1] = 20
>>> a
['foo', 'bar', 10, 'qux', 'quux', 20]

>>> Xem thêm bài viết:

- Bài 1: Cài đặt Python và tạo dựng môi trường làm việc

- Bài 2: Biến và kiểu dữ liệu cơ bản trong Python

- Bài 3: Câu lệnh điều kiện if trong Python

3. Thao tác với list trong Python

3.1. append

Sử dụng phương thức này để thêm đối tượng vào trong list:

>>> a = ['a', 'b']
>>> a.append(123)
>>> a
['a', 'b', 123]

3.2. extend

Phương thức này cũng cho phép chúng ta thêm phần tử vào trong list, tuy nhiên nó không nhận vào biến là một đối tượng mà nhận vào một iterable. Điều này có nghĩa là, khi sử dụng phương thức này, chúng ta có thể ghi thêm vào danh sách một cơ số các phần tử khác chứ không chỉ dừng lại ở một đối tượng cụ thể.

>>> a = ['a', 'b']
>>> a.extend([1, 2, 3])
>>> a
['a', 'b', 1, 2, 3]

3.3. insert

insert(<index>, <object>) cho phép điền đối tượng <object> vào chỉ mục <index> của list. Sau khi thêm đối tượng vào vị trí chỉ định thì các phần tử có sẵn trong danh sách sẽ được đẩy về phía bên phải vị trí trước đó của nó.

>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a.insert(3, 3.14159)
>>> a[3]
3.14159
>>> a
['foo', 'bar', 'baz', 3.14159, 'qux', 'quux', 'corge']

3.4. remove

Cho phép chúng ta xóa đối tượng truyền vào trong phương thức ra khỏi list, nếu đối tượng không có trong list, Python sẽ văng ra một Exception.

>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a.remove('baz')
>>> a
['foo', 'bar', 'qux', 'quux', 'corge']
>>> a.remove('Bark!')
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    a.remove('Bark!')
ValueError: list.remove(x): x not in list

Kết

Trên đây là bài viết chia sẻ của Stringee về danh sách trong Python, đây là một cấu trúc quan trọng và được sử dụng rất rộng rãi. Việc nắm rõ và vận dụng được list sẽ giúp bạn rất nhiều trong công việc phát triển ứng dụng chạy trên nền Python.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: