Ở bài này ta sẽ tìm hiểu về Lists trong python. Lists được sử dụng để lưu trữ nhiều mục trong một biến duy nhất.
List
List là một trong 4 loại dữ liệu có sẵn trong Python dùng để lưu trữ các bộ sưu tập dữ liệu, 3 loại còn lại là Tuple , Set và Directory.
List được tạo bằng dấu ngoặc vuông:
Ví dụ: Tạo một List:
thislist = ["apple", "banana", "cherry"]
print(thislist)
Phần tử trong List
- Các mục trong List được sắp xếp theo thứ tự, có thể thay đổi và cho phép các giá trị trùng lặp.
- Các mục trong List được lập chỉ mục, mục đầu tiên có chỉ mục [0], mục thứ hai có chỉ mục, [1]v.v..
- Khi chúng ta nói rằng List được sắp xếp, điều đó có nghĩa là các mục có một thứ tự xác định và thứ tự đó sẽ không thay đổi.
- Nếu bạn thêm các mục mới vào List, các mục mới sẽ được đặt ở cuối List.
- List có thể thay đổi, nghĩa là chúng ta có thể thay đổi, thêm và xóa các mục trong List sau khi nó được tạo.
Độ dài của list
Để xác định List có bao nhiêu mục, hãy sử dụng hàm len():
Ví dụ: In số lượng mục trong List:
thislist = ["apple", "banana", "cherry"]
print(len(thislist))
>>>3
Kiểu dữ liệu các phần tử trong list
- Các phần tử trong List có thể thuộc bất kỳ loại dữ liệu nào:
list1 = ["apple", "banana", "cherry"]
list2 = [1, 5, 7, 9, 3]
list3 = [True, False, False]
- Một phần tử trong List có thể chứa các loại dữ liệu khác nhau:
list1 = ["abc", 34, True, 40, "male"]
Kiểu dữ liệu của List
Từ quan điểm của Python, List được định nghĩa là các đối tượng có kiểu dữ liệu ‘list’:
<class 'list'>
Hàm tạo List
Cũng có thể sử dụng hàm tạo list() khi tạo List mới.
thislist = list(("apple", "banana", "cherry")) # note the double round-brackets
print(thislist)
>>> ['apple', 'banana', 'cherry']
Làm việc với chỉ mục (index) trong list
Truy cập phần tử bằng index
Các List được lập chỉ mục và bạn có thể truy cập chúng bằng cách tham khảo số chỉ mục:
Ví dụ: In mục thứ hai của List:
thislist = ["apple", "banana", "cherry"]
print(thislist[1])
>>> banana
Lưu ý: Mục đầu tiên có chỉ số 0.
Chỉ mục âm
Lập chỉ mục phủ định có nghĩa là bắt đầu từ cuối
-1 đề cập đến mục cuối cùng, -2 đề cập đến mục cuối cùng thứ hai, v.v.
thislist = ["apple", "banana", "cherry"]
print(thislist[-1])
>>> cherry
Phạm vi của chỉ mục
Bạn có thể chỉ định một phạm vi chỉ mục bằng cách chỉ định nơi bắt đầu và nơi kết thúc phạm vi.
- Khi chỉ định một phạm vi, giá trị trả về sẽ là một List mới với các mục được chỉ định.
Ví dụ:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])
>>> ['cherry', 'orange', 'kiwi']
- Bằng cách bỏ đi giá trị bắt đầu, phạm vi sẽ bắt đầu ở mục đầu tiên:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[:4])
>>> ['apple', 'banana', 'cherry', 'orange']
- Bằng cách bỏ đi giá trị cuối, phạm vi sẽ đi đến cuối danh sách:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:])
>>> ['cherry', 'orange', 'kiwi', 'melon', 'mango']
Kiểm tra xem phần tử có tồn tại trong danh sách không?
Để xác định xem giá trị được chỉ định có trong List hay không, hãy sử dụng từ khóa in:
Ví dụ:
thislist = ["apple", "banana", "cherry"]
if "apple" in thislist:
print("Yes, 'apple' is in the fruits list")
>>> Yes, 'apple' is in the fruits list
Thay đổi giá trị trong List
Thay đổi giá trị một phần tử trong list
Để thay đổi giá trị của một mục cụ thể, hãy tham khảo số chỉ mục:
Ví dụ:
thislist = ["apple", "banana", "cherry"]
thislist[1] = "blackcurrant"
print(thislist)
>>> ['apple', 'blackcurrant', 'cherry']
Thay đổi nhiều giá trị trong list
Để thay đổi giá trị của các mục trong một phạm vi cụ thể, hãy xác định List với các giá trị mới và tham khảo phạm vi số chỉ mục mà bạn muốn chèn các giá trị mới:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "mango"]
thislist[1:3] = ["blackcurrant", "watermelon"]
print(thislist)
>>> ['apple', 'blackcurrant', 'watermelon', 'orange', 'kiwi', 'mango']
Nếu bạn chèn nhiều mục hơn mức thay thế, các mục mới sẽ được chèn vào nơi bạn đã chỉ định và các mục còn lại sẽ di chuyển tương ứng:
thislist = ["apple", "banana", "cherry"]
thislist[1:2] = ["blackcurrant", "watermelon"]
print(thislist)
>>> ['apple', 'blackcurrant', 'watermelon', 'cherry']
Lưu ý: Độ dài của danh sách sẽ thay đổi khi số mục được chèn không khớp với số mục được thay thế.
Nếu bạn chèn ít mục hơn số mục bạn thay thế, thì các mục mới sẽ được chèn vào nơi bạn đã chỉ định và các mục còn lại sẽ di chuyển tương ứng:
thislist = ["apple", "banana", "cherry"]
thislist[1:3] = ["watermelon"]
print(thislist)
>>> ['apple', 'watermelon']
Chèn phần từ vào trong List
Để thêm một mục vào cuối List, hãy sử dụng phương thức append() :
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)
>>> ['apple', 'banana', 'cherry', 'orange']
Chèn phần tử vào vị trí chỉ định trong List
Để chèn một mục danh sách mới mà không thay thế bất kỳ giá trị hiện có nào, chúng ta có thể sử dụng phương thức insert()
thislist = ["apple", "banana", "cherry"]
thislist.insert(2, "watermelon")
print(thislist)
>>> ['apple', 'banana', 'watermelon', 'cherry']
Nối các list để mở rộng
Để nối các phần tử từ List khác vào List hiện tại, hãy sử dụng phương thức extend().
Các phần tử sẽ được thêm vào cuối List.
thislist = ["apple", "banana", "cherry"]
tropical = ["mango", "pineapple", "papaya"]
thislist.extend(tropical)
print(thislist)
>>> ['apple', 'banana', 'cherry', 'mango', 'pineapple', 'papaya']
Xoá phần tử trong list
Phương thức remove() loại bỏ phần tử được chỉ định.
thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)
>>> ['apple', 'cherry']
Nếu có nhiều phần tử có giá trị được chỉ định, phương thức remove() sẽ loại bỏ lần xuất hiện đầu tiên:
thislist = ["apple", "banana", "cherry", "banana", "kiwi"]
thislist.remove("banana")
print(thislist)
>>> ['apple', 'cherry', 'banana', 'kiwi']
Xoá phần từ theo chỉ mục
Phương thức pop() loại bỏ phần tử có thứ tự chỉ định.
thislist = ["apple", "banana", "cherry"]
thislist.pop(1)
print(thislist)
>>> ['apple', 'cherry']
Nếu bạn không chỉ định chỉ mục, phương thức pop() sẽ xóa mục cuối cùng.
thislist = ["apple", "banana", "cherry"]
thislist.pop()
print(thislist)
>>> ['banana', 'cherry']
Từ khóa del cũng xóa chỉ mục đã chỉ định:
thislist = ["apple", "banana", "cherry"]
del thislist[0]
print(thislist)
>>> ['banana', 'cherry']
Xoá sạch các phần tử
Phương thức này clear() làm trống List. List vẫn còn nhưng không có nội dung.
thislist = ["apple", "banana", "cherry"]
thislist.clear()
print(thislist)
>>> []
Duyệt các phần tử trong list
Duyệt bằng vòng lặp for
- Bạn có thể lặp qua các mục trong List bằng cách sử dụng vòng lặp for:
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)
- Bạn cũng có thể lặp qua các mục trong List bằng cách tham khảo số chỉ mục của chúng. Sử dụng các hàm range() và len() để tạo một vòng lặp phù hợp.
thislist = ["apple", "banana", "cherry"]
for i in range(len(thislist)):
print(thislist[i])
Sử dụng vòng lặp while
Bạn có thể lặp qua các mục trong List bằng cách sử dụng vòng lặp while.
Sử dụng hàm len() để xác định độ dài của danh sách, sau đó bắt đầu từ 0 và lặp theo cách của bạn qua các mục trong List bằng cách tham khảo chỉ mục của chúng.
Hãy nhớ tăng chỉ số lên 1 sau mỗi lần lặp.
thislist = ["apple", "banana", "cherry"]
i = 0
while i < len(thislist):
print(thislist[i])
i = i + 1
Sắp xếp List
Sắp xếp List theo thứ tự chữ cái
Các đối tượng danh sách có một phương thức sort() sẽ sắp xếp List theo thứ tự chữ và số, tăng dần theo mặc định:
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort()
print(thislist)
>>> ['banana', 'kiwi', 'mango', 'orange', 'pineapple']
Sắp xếp theo danh sách số:
thislist = [100, 50, 65, 82, 23]
thislist.sort()
print(thislist)
>>> [23, 50, 65, 82, 100]
Sắp xếp giảm dần
Để sắp xếp giảm dần, hãy sử dụng đối số từ khóa reverse = True:
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort(reverse = True)
print(thislist)
>>> ['pineapple', 'orange', 'mango', 'kiwi', 'banana']
Tuỳ chính chức năng sắp xếp
Bạn cũng có thể tùy chỉnh chức năng của riêng mình bằng cách sử dụng từ khóa đối số: key = function
Hàm sẽ trả về một số sẽ được sử dụng để sắp xếp List (số thấp nhất trước):
Ví dụ: Sắp xếp List dựa trên mức độ gần với số 50:
def myfunc(n):
return abs(n - 50)
thislist = [100, 50, 65, 82, 23]
thislist.sort(key = myfunc)
print(thislist)
>>> [50, 65, 23, 82, 100]
Theo mặc định, phương thức sort() này phân biệt chữ hoa chữ thường, dẫn đến tất cả các chữ cái viết hoa được sắp xếp trước chữ cái viết thường.
Ta có thể sử dụng các hàm dựng sẵn làm các hàm chính khi sắp xếp List.
Vì vậy, nếu bạn muốn hàm sắp xếp không phân biệt chữ hoa chữ thường, hãy sử dụng str.low làm hàm chính:
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)
Thứ tự ngược lại
Điều gì sẽ xảy ra nếu bạn muốn đảo ngược thứ tự của một List, bất kể bảng chữ cái?
Phương thức reverse() đảo ngược thứ tự sắp xếp hiện tại của các phần tử.
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.reverse()
print(thislist)
>>> ['cherry', 'Kiwi', 'Orange', 'banana']
Sao chép List
Bạn không thể sao chép List chỉ bằng cách gõ list2 = list1, bởi vì: list2 sẽ chỉ là một tham chiếu đến list1, và những thay đổi được thực hiện trong đó list1 cũng sẽ tự động được thực hiện trong list2.
Có nhiều cách để tạo một bản sao, một cách là sử dụng phương thức copy() List có sẵn.
thislist = ["apple", "banana", "cherry"]
mylist = thislist.copy()
print(mylist)
Một cách khác để tạo bản sao là sử dụng phương thức có sẵn list()
thislist = ["apple", "banana", "cherry"]
mylist = list(thislist)
print(mylist)
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData.
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: