[Python] Tìm hiểu về Python List (phần 1) – Indexing

Cùng đến với bài viết về cách sử dụng và hoạt động của một kiểu dữ liệu trong Python là Python List (danh sách). Với phần 1 : python list – indexing. Qua bài viết này nếu có gì sai sót hay không chính xác mong được các bạn góp ý.

1. Python list là gì ?

Trong lập trình python, 1 list (danh sách – python list) được khởi tạo bằng cách thiết lập các giá trị phần tử bên trong 1 cặp ngoặc vuông ‘[..]’. được ngăn bởi dấu phẩy ‘,’ . Từ chuyên môn sẽ gọi ‘list’ là loại ‘sequence type’ là một tập hợp các đối tượng giá trị phần tử theo thứ tự nhất định.

Ta có thể số lượng phần tử bao nhiêu cũng được và loại phần tử như integer, float, string hay thậm chí cả 1 list cũng được. List trong list được gọi là ‘nested list’.

Lưu ý:
– Syntax cấu trúc lệnh python sử dụng trong bài viết là Python version 3.5.x.

Ví dụ 1 (python list) :

– list rỗng.

>>> my_list = []

 
– list số nguyên.

>>> number_list = [ 1, 2, 3]

 
– list hỗn hợp các loại dữ liệu phần tử.

>>> mixed_list = [ 1, “hello” , 3, 4]

 
– list trong list, còn được gọi là nested list.

>>> my_list = [“Cuong”, “Quach”, [ 1, 2, 3], 1]

 
– list chứa 3 tuple.

>>> my_list = [(“cheese", "queso"), ("red", "rojo"), ("school", "escuela")]

2. Truy xuất phần tử trong danh sách

2.1. List index

Với danh sách (python list) nằm trong dấu ngoặc vuông, thì bạn sẽ truy xuất phần tử thông qua giá trị index (chỉ mục – indexing operator). Index bắt đầu từ con số 0 và tăng tiến dần cho đến khi tổng số lượng index bằng tổng số lượng phần tử trong danh sách. Ví dụ, một danh sách có 5 phần tử thì sẽ có index tương ứng là 0,1,2,3,4 . Mỗi giá trị index sẽ tương ứng thứ tự của các phần tử trong danh sách. Nếu bạn truy xuất một phần tử nằm ngoài danh sách index thì bạn sẽ gặp phải lỗi IndexError.

Cú pháp python list :

list(index)

 
Lưu ý:

– Index phải là số nguyên integer. Không sử dụng số float hay các loại dữ liệu khác sẽ dẫn đến lỗi TypeError.

Ví dụ 2.1.1 :

>>> my_list = [ 'Cuong' , 'Quach' , 'dot' , 'com' ]

>>> print(my_list[0])
Cuong
>>> print(my_list[4])
com
>>> print(my_list[5])
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-8-6d15ed98252a> in <module>()
----> 1 print(my_list[5]) # Error -> IndexError: list index out of range

IndexError: list index out of range

>>> print(my_list[-4][1]) # output la : u . Chữ ‘u’ trong chữ ‘Cuong’ . Tức truy xuất danh sách 2 chiều (mảng 2 chiều)
u

Ví dụ 2.1.2 :

python list part 1
python list part 1
>>> colors = ['red', 'blue', 'green']
>>> print colors[0]
red
>>> print colors[2]
green
>>> print(len(colors))
3

Ví dụ 2.1.3 :

– Nếu bạn gán một biến khác với một list trong python, thì biến mới đó sẽ không thực hiện copy giá trị phần tử list cũ tạo thành list mới. Mà đơn giản là 2 giá trị biến đó sẽ được trỏ đến cùng danh sách list phần tử trong bộ nhớ hệ thống đang lưu trữ thông tin.

python list part 2
python list part 2
>>> colors = ['red', 'blue', 'green']
>>> print(colors)
['red', 'blue', 'green']
>>> xyz = colors
>>> print(xyz)
['red', 'blue', 'green']

2.2. Negative Indexing

Python cho phép chỉ định index số âm trong 1 danh sách, tức là đi chiều ngược từ phải qua trái với từng index trong list.

Ví dụ 2.2 :

>>> my_list = [ 'Cuong' , 'Quach' , 'dot' , 'com' ]
>>> print(my_list[-1])
com

>>> print(my_list[-4])
4

 
2.3 Độ dài danh sách

Nếu bạn muốn biết độ dài của danh sách, tương ứng số lượng phần tử trong danh sách list, phù hợp để tính toán số lượng index cần truy xuất tối đa. Thì hãy dùng hàm ’len()’.

Ví dụ 2.3:

>>> my_list = [ 'Cuong' , 'Quach' , 'dot' , 'com' ]
>>> print(len(my_list))
4
>>> pairs = [('cheese', 'queso'), ('red', 'rojo'), ('school', 'escuela')]
>>> len(pairs)
3

 
2.4 IndexError: list index out of range

Khi mà lập trình thì việc truy cập các phần tử đến phần tử cuối cùng của danh sách thứ tự là chuyện phổ biến. Nhưng những bạn mới sẽ cần lưu ý như sau thông qua ví dụ dưới :

>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> print(seq[16])
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-3-2653eeb4fae0> in <module>()
----> 1 print(seq[16])

IndexError: list index out of range

 
Phát sinh lỗi ‘IndexError: list index out of range’, nguyên nhân là ta truy xuất phần tử trong danh sách python list ở vị trí index ngoài dãy giá trị index đang có với. Ví dụ, độ  dài của list len(seq) trả về số lượng của phần tử trong danh sách là ’16’ , nhưng không có phần tử nào nằm ở vị trí index 16 cả. Vì như đã đề cập ở trên thì index của danh sách bắt đầu từ ’0’ nên vị trí cuối cùng phải là ’15’ , tương ứng 0 -> 15 . Nên để truy cập phần tử cuối thì ta có thể làm như sau :

>>> seq = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]
>>> print(seq[len(seq)-1])
0

3. Thêm, xoá và thay đổi giá trị phần tử trong list

3.1 Thay đổi giá trị phần tử trong list

Đối với danh sách list trong python ta có thể thay đổi giá trị phần tử trong list với toán tử ‘=‘ thông qua các ví dụ sau

Ví dụ 3.1 :

– Thay đổi giá trị ở vị trí index [0] , trong ví dụ dưới là từ ‘2’ -> ‘3’.

>>> my_list = [2, 4, 5, 7, 9]
[2, 4, 5, 7, 9]

>>> my_list[0] = 3
>>> print(my_list)
[3, 4, 5, 7, 9]

 
3.2 Thêm và xoá giá trị phần tử trong list

Do phần này dính tới nội dung của Method List, các phương thức được sử dụng với kiểu dữ liệu ‘list’ nên ta sẽ bàn ở phần sau.

Hy vọng các bạn có thể nắm được nội dung cơ bản về Python Datatype List phần 1 : Indexing.

Previous article[Python] Hướng dẫn kiểm tra file có tồn tại trên hệ thống với Python
Next article[Linux] CentOS 5 và RHEL 5 chấm dứt thời gian hỗ trợ vào cuối tháng 3/2017
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !