Lists trong python

Bởi Kiên Smart Data
0 Nhận xét

Ở 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:

Bài viết liên quan

Để lại nhận xét

Copyright @2022 – Bản quyền thuộc Học viện dữ lệu Smart Data