Python: List

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Cấu trúc dữ liệu cơ bản nhất trong Python là chuỗi. Mỗi phần tử của một dãy được gán một số - vị trí hoặc chỉ số của nó. Chỉ mục đầu tiên bằng 0, chỉ mục thứ hai là 1, v.v.

Python có sáu loại chuỗi tích hợp, nhưng những loại phổ biến nhất là danh sách (List) và bộ dữ liệu (Tuple), chúng ta sẽ thấy trong hướng dẫn này.

Có một số điều bạn có thể làm với tất cả các loại chuỗi. Các hoạt động này bao gồm lập chỉ mục, cắt, thêm, nhân và kiểm tra thành viên. Ngoài ra, Python có các hàm tích hợp để tìm độ dài của một chuỗi, tìm các phần tử lớn nhất và nhỏ nhất của nó.

List

List (Danh sách) là cấu trúc dữ liệu linh hoạt nhất có sẵn trong Python, có thể được viết dưới dạng danh sách các giá trị (mục) được phân tách bằng dấu phẩy giữa các dấu ngoặc vuông. Điều quan trọng về danh sách là các mục trong danh sách không cần cùng kiểu.

Việc tạo danh sách đơn giản là đặt các giá trị được phân tách bằng dấu phẩy trong cặp ngoặc vuông. Ví dụ:

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]

Tương tự như chỉ số chuỗi, chỉ mục danh sách bắt đầu từ 0 và danh sách có thể được cắt, nối, v.v.

Thêm phần tử vào danh sách

Để thêm phần tử vào danh sách, ta sử dụng phương thức append().

Cú pháp

tên_list.append(obj)

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc']
aList.append(2009)
print("Updated List:", aList)

Kết quả:

Updated List: [123, 'xyz', 'zara', 'abc', 2009]

Truy cập các giá trị trong danh sách

Để truy cập các giá trị trong danh sách, hãy sử dụng dấu ngoặc vuông để cắt cùng với chỉ mục hoặc các chỉ mục để lấy giá trị có sẵn tại chỉ mục đó. Ví dụ:

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print("list1[0]: ", list1[0])
print("list2[1:5]: ", list2[1:5])

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

list1[0]: physics
list2[1:5]: [2, 3, 4, 5]

Cập nhật danh sách

Bạn có thể cập nhật một hoặc nhiều phần tử của danh sách bằng cách đặt phần tử muốn cập nhật bên trái của toán tử gán và bạn có thể thêm vào các phần tử trong danh sách bằng phương thức append(). Ví dụ:

list = ['physics', 'chemistry', 1997, 2000]
print("Trước khi cp nht, giá tr ti ch s 2 là:",list[2])
list[2] = 2001 #tiến hành cp nht
print("Sau khi cp nht, giá tr ti ch s 2 là:",list[2])

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

Trước khi cập nhật, giá trị tại chỉ số 2 là: 1997
Sau khi cập nhật, giá trị tại chỉ số 2 là: 2001

Xóa các phần tử danh sách

Để xóa một phần tử trong danh sách, bạn có thể sử dụng câu lệnh del nếu bạn biết chính xác chỉ số của phần tử bạn đang xóa hoặc dùng phương thức remove() nếu bạn biết chính xác giá trị bạn muốn xóa. Ví dụ:

list1 = ['physics', 'chemistry', 1997, 2000];
print(list1)
del list1[2];
print("After deleting value at index 2:",list1)
list1.remove(2000)
print("After deleting value 2000:",list1)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

['physics', 'chemistry', 1997, 2000]
After deleting value at index 2: ['physics', 'chemistry', 2000]
After deleting value 2000: ['physics', 'chemistry']

Các hoạt động trên danh sách

Ta có thể sử dụng được các toán tử + và * và chúng hoạt động trên danh sách giống như hoạt động trên chuỗi - chúng cũng có nghĩa là nối và lặp lại - ngoại trừ kết quả là một danh sách mới, không phải một chuỗi.

Trên thực tế, danh sách phản hồi tất cả các hoạt động mà ta đã sử dụng trên các chuỗi trong chương trước.

Biểu thức Python Kết quả Mô tả
len ([1, 2, 3]) 3 Lấy kích thước danh sách
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Nối danh sách
['Xin chào!'] * 4 ["Xin chào!", "Xin chào!", "Xin chào!", "Xin chào!"] Sự lặp lại
3 in [1, 2, 3] True Kiểm tra tồn tại
for x in [1, 2, 3]: print x, 1 2 3 Lặp

Chỉ số, Phân đoạn và Ma trận

Bởi vì danh sách là chuỗi nên việc lập chỉ mục và phân loại hoạt động giống như cách đối với danh sách cũng như đối với chuỗi.

Giả sử ta có danh sách sau:

L = ['spam', 'Spam', 'SPAM!']
Biểu thức Python Kết quả Mô tả
L[2] SPAM! Offsets bắt đầu từ 0
L[-2] Spam Phủ định: đếm ngược từ phải sang trái bắt đầu từ -1
L[1:] ['Spam', 'SPAM!'] Phân đoạn tìm nạp các phần tử bắt đầu từ 1

Các hàm xử lý danh sách

cmp()

Lưu ý: cmp() chỉ dùng cho Python 2.

Hàm này dùng để so sánh các phần tử của hai danh sách.

Cú pháp

Sau đây là cú pháp cho hàm cmp():

cmp(list1, list2)

trong đó:

list1 và list2 là các danh sách đem so sánh.

Giá trị trả về

Hàm cmp() này trả về 1 nếu list1 “lớn hơn” list2, -1 nếu list1 nhỏ hơn list2, 0 nếu list1 và list2 giống hệt nhau.

Có một số trường hợp sau đây ta cần để ý tới khi so sánh hai danh sách.

Trường hợp 1: Khi hai danh sách chỉ chứa các số nguyên.

Đây là trường hợp khi tất cả các phần tử trong danh sách có kiểu số nguyên và do đó khi so sánh được thực hiện thì sẽ tiến hành so sánh từng số được thực hiện từ trái sang phải, nếu ta nhận được một số lớn hơn ở bất kỳ chỉ mục cụ thể nào thì lập tức dừng lại và kết luận danh sách tương ứng sẽ lớn hơn. Nếu tất cả các phần tử trong cả hai danh sách đều giống nhau và một danh sách lớn hơn (về kích thước) so với danh sách kia, thì danh sách lớn hơn được coi là lớn hơn.

Ví dụ

# initializing argument lists
list1 = [ 1, 2, 4, 3]
list2 = [ 1, 2, 5, 8]
list3 = [ 1, 2, 5, 8, 10]
list4 = [ 1, 2, 4, 3]

# Comparing lists
print "Comparison of list2 with list1 : ",
print cmp(list2, list1)

# prints -1, because list3 has larger size than list2
print "Comparison of list2 with list3(larger size) : ",
print cmp(list2, list3)

# prints 0 as list1 and list4 are equal
print "Comparison of list4 with list1(equal) : ",
print cmp(list4, list1)

Kết quả:

Comparison of list2 with list1 :  1
Comparison of list2 with list3(larger size) :  -1
Comparison of list4 with list1(equal) :  0

Trường hợp 2: Khi danh sách chứa nhiều kiểu dữ liệu.

Trường hợp khi có nhiều hơn một kiểu dữ liệu thì chuỗi được coi là lớn hơn số nguyên, và vì vậy tất cả các kiểu dữ liệu được sắp xếp theo thứ tự bảng chữ cái trong trường hợp so sánh. Quy tắc kích thước vẫn được áp dụng trong trường hợp này.

Ví dụ:

# initializing argument lists
list1 = [ 1, 2, 4, 10]
list2 = [ 1, 2, 4, 'a']
list3 = [ 'a', 'b', 'c']
list4 = [ 'a', 'c', 'b']

# Comparing lists
# prints 1 because string
# at end compared to number
# string is greater
print "Comparison of list2 with list1 : ",
print cmp(list2, list1)

# prints -1, because list3
# has an alphabet at beginning
# even though size of list2
# is greater, Comparison
# is terminated at 1st
# element itself.
print "Comparison of list2 with list3(larger size) : ",
print cmp(list2, list3)

# prints -1 as list4 is greater than
# list3
print "Comparison of list3 with list4 : ",
print cmp(list3, list4) 

Kết quả:

Comparison of list2 with list1 :  1
Comparison of list2 with list3(larger size) :  -1
Comparison of list3 with list4 :  -1

len()

Hàm này dùng để lấy độ dài của danh sách.

Ví dụ:

list1=[10,30,20,40]
print(len(list1)) # sin ra 4

max()

Hàm này dùng để tìm giá trị lớn nhất trong danh sách. Lưu ý là nếu danh sách chứa nhiều kiểu dữ liệu khác nhau thì hàm này sẽ không thực thi được.

Ví dụ:

list1 = [123, 456, 700, 200]
print("Max value element : ", max(list1))

Kết quả:

Max value element :  700

min()

Hàm này dùng để tìm giá trị nhỏ nhất trong danh sách. Lưu ý là nếu danh sách chứa nhiều kiểu dữ liệu khác nhau thì hàm này sẽ không thực thi được.

Ví dụ:

list1 = [123, 456, 700, 200]
print("Max value element : ", min(list1))

Kết quả:

Max value element :  123

list()

list() sẽ nhận các kiểu chuỗi và chuyển đổi chúng thành danh sách. Như vậy hàm này sẽ được sử dụng để chuyển đổi một bộ dữ liệu nhất định thành danh sách.

Lưu ý: Tuple rất giống với danh sách chỉ khác là các giá trị phần tử của một tuple không thể thay đổi được và các phần tử của tuple được đặt giữa các dấu ngoặc đơn thay vì dấu ngoặc vuông.

Ví dụ sau cho thấy việc sử dụng phương thức list ().

aTuple = (123, 'xyz', 'zara', 'abc');
aList = list(aTuple)
print("List elements:", aList)

Kết quả:

List elements: [123, 'xyz', 'zara', 'abc']

Các phương thức xử lý danh sách

append()

Để thêm phần tử vào danh sách, ta sử dụng phương thức append().

cout(obj)

Phương thức này trả về số lần xuất hiện của đối tượng obj trong danh sách.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 123];
print("Count for 123 : ", aList.count(123))
print("Count for zara : ", aList.count('zara'))

Kết quả:

Count for 123 :  2
Count for zara :  1

extend(seq)

Phương thức này dùng để thêm nội dung của seq vào danh sách.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 123]
bList = [2009, 'manni']
aList.extend(bList)
print("Extended List:", aList)

Kết quả:

Extended List: [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']

index(obj)

Trả về chỉ số nhỏ nhất trong danh sách mà obj xuất hiện.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 123]
print(aList.index(123))

Kết quả:

0

insert(chỉ_mục, obj)

Chèn đối tượng obj vào danh sách tại vị trí chỉ_mục.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 123]
aList.insert(2,'def')
print(aList)

Kết quả:

[123, 'xyz', 'def', 'zara', 'abc', 123]

pop(chỉ_số = -1)

Xóa đối tượng có chỉ_số khỏi danh sách và trả về đối tượng đó. Nếu không nói rõ chỉ_số thì chỉ số mặc định là -1 (tức là đối tượng cuối cùng của danh sách).

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 123]
aList.pop()  #xóa phn tcui
print(aList)
aList.pop(2) #xóa phn tchs2
print(aList)

Kết quả:

[123, 'xyz', 'zara', 'abc']
[123, 'xyz', 'abc']

remove()

Xóa đối tượng obj khỏi danh sách. Trường hợp có nhiều đối tượng obj giống nhau thì sẽ xóa đối tượng đầu tiên (bên trái) tìm thấy.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 123]
aList.remove(123) #xóa đi tượng có giá tr123 u tiên) khi danh sách
print(aList)

Kết quả:

['xyz', 'zara', 'abc', 123]

reverse()

Đảo ngược trật tự của các đối tượng trong danh sách.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc']
aList.reverse()
print(aList)

Kết quả:

['abc', 'zara', 'xyz', 123]

sort()

Sắp xếp các đối tượng của danh sách theo thứ tự tăng. Lưu ý là tất cả các đối tượng của danh sách phải cùng kiểu.

Ví dụ:

aList = ['123', 'xyz', 'zara', 'abc']
aList.sort()
print(aList)

Kết quả:

['123', 'abc', 'xyz', 'zara']

» Tiếp: Các hàm xử lý List
« Trước: Đệ quy (Recursion)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!