Thứ sáu, 11/11/2016 | 00:00 GMT+7

Cách sử dụng các phương thức danh sách trong Python 3

Python 3 có một số cấu trúc dữ liệu tích hợp sẵn, bao gồm cả danh sách. Cấu trúc dữ liệu cung cấp cho ta cách tổ chức và lưu trữ dữ liệu, đồng thời ta có thể sử dụng các phương thức tích hợp để truy xuất hoặc thao tác dữ liệu đó.

Để tận dụng tối đa hướng dẫn này, bạn nên làm quen với kiểu dữ liệu danh sách, cú pháp của nó và cách nó được lập index . Bạn có thể xem lại danh sách bằng cách đọc hướng dẫn Hiểu danh sách trong Python 3 .

Ở đây, ta sẽ xem xét các phương pháp tích hợp sẵn mà bạn có thể sử dụng để làm việc với danh sách. Ta sẽ thêm các mục vào và xóa các mục khỏi danh sách, mở rộng danh sách, đảo ngược và sắp xếp danh sách, v.v.

Điều quan trọng cần lưu ý là danh sách là kiểu dữ liệu có thể thay đổi - hoặc có thể thay đổi. Không giống như các chuỗi , là bất biến, khi nào bạn sử dụng một phương thức trên danh sách, bạn sẽ ảnh hưởng đến chính danh sách đó chứ không phải bản sao của danh sách.

Đối với hướng dẫn này, ta sẽ làm việc chủ yếu với một danh sách bao gồm danh sách các loại cá khác nhau mà ta cần sửa đổi khi cá được thêm vào hoặc loại bỏ khỏi bể cá city .

list.append ()

Phương thức list.append(x) sẽ thêm một mục ( x ) vào cuối danh sách. Ta sẽ bắt đầu với một danh sách các loài cá của ta được phân tán khắp bể cá.

fish = ['barracuda','cod','devil ray','eel'] 

Danh sách này bao gồm 4 mục chuỗi, và số index của chúng nằm trong repository ảng từ 'barracuda' ở chỉ số 0 đến 'eel' ở chỉ số 3.

Ta vừa có một con cá mới vào bể cá hôm nay và ta muốn thêm con cá đó vào danh sách của bạn . Ta sẽ chuyển chuỗi loại cá mới của ta , 'flounder' vào phương thức list.append() , sau đó in ra danh sách đã sửa đổi của ta để xác nhận mục đã được thêm vào.

fish.append('flounder') print(fish) 
Output
['barracuda', 'cod', 'devil ray', 'eel', 'flounder']

Bây giờ, ta có một danh sách gồm 5 mục chuỗi kết thúc bằng mục mà ta đã chuyển vào hàm .append() .

list.insert ()

Phương thức list.insert(i,x) nhận hai đối số, với i là vị trí index bạn muốn thêm một mục và x là chính mục đó.

Bể cá của ta có thêm một con cá mới, một con cá cơm. Bạn có thể nhận thấy rằng cho đến nay danh sách fish được xếp theo thứ tự bảng chữ cái. Do đó, ta không muốn chỉ thêm chuỗi 'anchovy' vào cuối fish bằng hàm list.append() . Thay vào đó, ta sẽ sử dụng list.insert() để thêm 'anchovy' list.insert() 'anchovy' vào đầu danh sách này ở vị trí index 0 :

fish.insert(0,'anchovy') print(fish) 
Output
['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder']

Trong trường hợp này, ta đã thêm mục chuỗi vào đầu danh sách. Mỗi mục kế tiếp bây giờ sẽ ở một số index mới khi tất cả chúng đã chuyển xuống. Do đó, 'barracuda' sẽ ở chỉ số 1, 'cod' sẽ ở chỉ số 2, và 'flounder' - mặt hàng cuối cùng - sẽ ở chỉ số 5.

Nếu tại thời điểm này, ta đang đưa một con cá thần tiên vào bể cá và ta muốn duy trì thứ tự bảng chữ cái dựa trên danh sách ở trên, ta sẽ đặt mục này ở chỉ số 3 : fish.insert(3,'damselfish') .

list.extend ()

Nếu ta muốn kết hợp nhiều hơn một danh sách, ta có thể sử dụng phương thức list.extend(L) , lấy danh sách thứ hai làm đối số của nó.

Bể cá của ta đang chào đón bốn con cá mới từ một bể cá khác đang đóng cửa. Ta có những con cá này cùng nhau trong danh sách more_fish :

more_fish = ['goby','herring','ide','kissing gourami'] 

Bây giờ ta sẽ thêm các mục từ danh sách more_fish vào fish danh sách và in danh sách đảm bảo rằng danh sách thứ hai đã được hợp nhất:

fish.extend(more_fish) print(fish) 
Output
['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide', 'kissing gourami']

Đến đây, danh sách fish bao gồm 10 mục.

list.remove ()

Khi ta cần xóa một mục khỏi danh sách, ta sẽ sử dụng phương thức list.remove(x) để xóa mục đầu tiên trong danh sách có giá trị tương đương với x .

Một group các nhà khoa học nghiên cứu local đã đến thăm thủy cung. Họ đang nghiên cứu về loài cá gourami hôn. Họ đã yêu cầu ta cho họ mượn đồ dùng để hôn, vì vậy, ta muốn xóa mục 'kissing gourami' khỏi danh sách để phản ánh sự thay đổi này:

fish.remove('kissing gourami') print(fish) 
Output
['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide']

Sau khi sử dụng phương thức list.remove() , danh sách của ta không còn mục 'kissing gourami' nữa.

Nếu bạn chuyển một mục cho x trong list.remove() không tồn tại trong danh sách, bạn sẽ nhận được lỗi sau:

Output
ValueError: list.remove(x): x not in list

Lưu ý list.remove() sẽ chỉ xóa version đầu tiên của mục mà bạn chuyển cho nó, vì vậy nếu ta có hai con gouramis hôn nhau tại bể cá của bạn và ta chỉ cho các nhà khoa học mượn một con, ta có thể sử dụng cùng một cấu trúc fish.remove('kissing gourami') và vẫn có gourami hôn thứ hai trong danh sách của ta .

list.pop ()

Ta có thể sử dụng phương thức list.pop([i]) để trả về mục tại vị trí index đã cho từ danh sách và sau đó xóa mục đó. Các dấu ngoặc vuông xung quanh i cho index cho ta biết rằng tham số này là tùy chọn, vì vậy nếu ta không chỉ định index (như trong fish.pop() ), mục cuối cùng sẽ được trả lại và bị xóa.

Cá đuối quỷ của ta đã quá lớn so với bể cá của ta , và may mắn thay, một bể cá cách vài thị trấn có thể đáp ứng nhu cầu của cá đuối. Ta sẽ sử dụng .pop() và chỉ định số index ( 3 ) của mục chuỗi 'devil ray' để xóa mục khỏi danh sách của ta và thông qua việc gửi lại nó, ta sẽ xác nhận ta đang xóa mục chính xác.

print(fish.pop(3)) print(fish) 
Output
devil ray ['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

Bằng cách sử dụng phương thức .pop() ta có thể quay lại và xóa 'devil ray' khỏi danh sách fish .

Nếu ta không chuyển tham số nào cho phương thức này và thực hiện fish.pop() , mục cuối cùng 'ide' sẽ được trả về và sau đó bị xóa khỏi danh sách.

list.index ()

Khi danh sách bắt đầu dài ra, ta sẽ khó đếm số lượng các mục của bạn hơn để xác định một giá trị nhất định nằm ở vị trí index nào. Ta có thể sử dụng list.index(x) , trong đó x tương đương với một giá trị mục, để trả về index trong danh sách có mục đó. Nếu có nhiều hơn một mục có giá trị x , phương thức này sẽ trả về vị trí index đầu tiên.

print(fish) print(fish.index('herring')) 
Output
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide'] 6

Mặc dù danh sách fish không dài lắm, nhưng ta vẫn có thể xác định vị trí index của mục 'herring' mà không cần đếm. Chỉ mục của mỗi mục là rất quan trọng cần biết để ta có thể thao tác danh sách một cách hiệu quả.

Ta sẽ nhận được lỗi nếu ta chỉ định giá trị bằng .index() và không có giá trị nào như vậy trong danh sách đã cho: ValueError: 'x' is not in list .

list.copy ()

Khi ta đang làm việc với một danh sách và có thể cần thao tác nó theo nhiều cách trong khi vẫn giữ nguyên danh sách root cho ta , ta có thể sử dụng list.copy() để tạo một bản sao của danh sách.

Ta sẽ chuyển giá trị được trả về từ fish.copy() cho biến fish_2 , sau đó in ra giá trị của fish_2 đảm bảo rằng đó là một danh sách có các mục giống như fish .

fish_2 = fish.copy() print(fish_2) 
Output
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

Đến đây, cả fishfish_2 đều là danh sách tương đương.

list.reverse ()

Ta có thể đảo ngược thứ tự của các mục trong danh sách bằng cách sử dụng phương thức list.reverse() . Có lẽ sẽ thuận tiện hơn cho ta khi sử dụng thứ tự bảng chữ cái ngược hơn là thứ tự bảng chữ cái truyền thống. Trong trường hợp đó, ta cần sử dụng phương thức .reverse() với danh sách fish để đảo ngược danh sách.

fish.reverse() print(fish) 
Output
['ide', 'herring', 'goby', 'flounder', 'eel', 'cod', 'barracuda', 'anchovy']

Sau khi sử dụng phương thức .reverse() , danh sách của ta bắt đầu bằng mục 'ide' , ở cuối danh sách của ta và kết thúc bằng 'anchovy' , ở đầu danh sách.

list.count ()

Phương thức list.count(x) sẽ trả về số lần giá trị x xuất hiện trong một danh sách được chỉ định. Ta có thể cần sử dụng phương pháp này khi ta có một danh sách dài với nhiều giá trị phù hợp. Ví dụ: nếu ta có một bể cá lớn hơn và ta có một mục cho mỗi và mọi đèn neon mà ta có, ta có thể sử dụng .count() để xác định tổng số tetra neon mà ta có tại bất kỳ thời điểm nào.

Ta sẽ sử dụng danh sách hiện tại của bạn để đếm số lần mục 'goby' xuất hiện:

print(fish.count('goby')) 
Output
1

Vì chuỗi 'goby' chỉ xuất hiện một lần nên số 1 được trả về khi ta sử dụng phương thức .count() .

Hãy cũng sử dụng phương pháp này với một danh sách số nguyên. Bể cá của ta commit cung cấp dịch vụ chăm sóc chu đáo cho từng con cá, vì vậy ta đang theo dõi độ tuổi của từng con cá để có thể đảm bảo chế độ ăn của chúng đáp ứng nhu cầu của cá dựa trên độ tuổi của chúng. Danh sách thứ hai này, fish_ages tương ứng với loại cá trong danh sách khác của ta , fish .

Bởi vì cá 1 tuổi có nhu cầu ăn kiêng đặc biệt, ta sẽ đếm xem ta có bao nhiêu con cá 1 tuổi:

fish_ages = [1,2,4,3,2,1,1,2] print(fish_ages.count(1)) 
Output
3

Số nguyên 1 xuất hiện trong danh sách fish_ages 3 lần, vì vậy khi ta sử dụng phương thức .count() , số 3 được trả về.

list.sort ()

Ta có thể sử dụng phương thức list.sort() để sắp xếp các mục trong danh sách.

Cũng giống như list.count() , list.sort() có thể làm rõ ràng hơn ta có bao nhiêu giá trị số nguyên nhất định và nó cũng có thể đặt một danh sách các số chưa được sắp xếp thành thứ tự số.

Hãy sử dụng danh sách số nguyên, fish_ages để xem phương thức .sort() đang hoạt động:

fish_ages.sort() print(fish_ages) 
Output
[1, 1, 1, 2, 2, 2, 3, 4]

Bằng cách sử dụng .sort() với fish_ages , các giá trị nguyên được trả về theo thứ tự. Trên thực tế, vì các độ tuổi này tương ứng với các loài cá cụ thể, bạn có thể cần tạo một bản sao của danh sách ban đầu trước khi phân loại nó.

list.clear ()

Khi ta hoàn thành một danh sách, ta có thể xóa tất cả các giá trị có trong nó bằng cách sử dụng phương thức list.clear() .

Chính quyền local đã quyết định tiếp quản hồ cá của ta , biến nó thành không gian công cộng cho người dân trong city của ta tận hưởng. Vì ta không còn tự làm bể cá nữa nên ta không cần phải kiểm kê số lượng cá nữa, vì vậy hãy xóa danh sách fish :

fish.clear() print(fish) 
Output
[]

Ta nhận được dấu ngoặc vuông làm kết quả của ta sau khi sử dụng hàm .clear() trên fish , cho ta biết rằng danh sách hiện đã xóa tất cả các mục.

Kết luận

Là một chuỗi phần tử có thứ tự có thể thay đổi hoặc có thể thay đổi, danh sách là cấu trúc dữ liệu rất linh hoạt trong Python. Phương pháp danh sách cho phép ta làm việc với danh sách một cách tinh vi. Ta có thể kết hợp các phương pháp với các cách khác để sửa đổi danh sách nhằm có đầy đủ các công cụ để sử dụng danh sách một cách hiệu quả trong các chương trình của bạn . Từ đây, bạn có thể đọc về hiểu danh sách để tạo danh sách dựa trên danh sách hiện có.


Tags:

Các tin liên quan

Các hàm Python 3 tích hợp để làm việc với các số
2016-11-08
Cách vẽ dữ liệu trong Python 3 bằng matplotlib
2016-11-07
Hiểu danh sách trong Python 3
2016-11-02
Cách làm Toán bằng Python 3 với Toán tử
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Cách sử dụng bộ định dạng chuỗi trong Python 3
2016-10-14
Cách xử lý tệp văn bản thuần túy trong Python 3
2016-10-13
Cách sử dụng các biến trong Python 3
2016-10-12