Bài 6: Danh sách (list) và vòng lặp for-loop

Một list được bắt đầu mở ngoặc vuông [ và đóng bởi ngoặc vuông ]. Các phần tử của list được cách nhau bởi dấu phẩy “,”. Mỗi phần từ được xác định bởi vị trí của nó (hay gọi là index) trong danh sách. Vị trí đầu tiên trong list có index = 0

# trong danh sách này, vị trí index = 0 có giá trị 0, index = 1 có giá trị 1, index = 2 có giá trị 1, index = 3 có giá trị 2...
numbers_list = [0, 1, 1, 2, 3, 5, 8, 13]

Các phần tử của 1 danh sách list có thể cùng giá trị. Ví dụ trong numbers_list ở trên phần tử ở vị trí số 1 và số 2 đều có giá trị bằng 1.

Chúng ta có thể dùng toán tử “in” để kiểm tra xem list có chứa 1 phần tử nhất định nào đó không:

numbers_list = [0, 1, 1, 2, 3, 5, 8, 13]
my_number = 3
if (my_number in numbers_list):
    print("My number is in the list")

Toán tử “is” dùng để sử dụng thêm 2 biến có phải cùng 1 bản sao hay không:

numbers_list = [0, 1, 1, 2, 3, 5, 8, 13]
my_list = [0, 1, 1, 2, 3, 5, 8, 13]
numbers_list_instance = numbers_list
if (my_list is numbers_list):
    print("my list is an instance of numbers_list")
else:
    print("my list is NOT an instance of numbers_list")

if (numbers_list_instance is numbers_list):
    print("numbers_list và numbers_list_instance cùng là 1 bản sao")

# tuy nhiên nếu dùng toán tử "==" thì python sẽ so sánh xem 2 list có giống nhau về các phần tử và thứ tự của các phần tử hay không 
if (my_list == numbers_list):
    print("True")

Vòng lặp for và list

Chúng ta dùng “for” để lặp qua các thành phần của một chuỗi thứ tự (sequence). Một vòng lặp for đơn giản để in ra tất cả các số nguyên từ 1 đến 100 (bao gồm cả 1 và 100). Ở đây chúng ta dùng hàm range(a, b) của python để tạo 1 list các số từ a đến b-1 (chú ý: điểm kết thúc của list là 101 chứ không phải 100)

for number in range(1, 101):
    print(number)

Chúng ta cũng có thể tạo 1 list tuỳ ý và dùng for-loop để xử lý từng phần tử trong list. Ví dụ dưới đây, chúng ta thực hiện luỹ thừa mũ 2 với từng phần tử của danh sách my_list và cho in kết quả ra màn hình:

my_list = [2, 4, 6, 8, 10, 12] 
for x in my_list:
    print(x**2)

Bạn hãy thử chạy đoạn code ở Python Shell dưới đây và xem kết quả:

Cú pháp “continue” và “break”

Khi đang trong 1 vòng lặp (for hay while), bạn có thể dùng câu lệnh:

  • continue: để bỏ qua lần lặp hiện tại. Các đoạn code còn lại trong khối code hiện tại của vòng lặp hiện tại sẽ không được thực thi. Chương trình sẽ nhẩy sang lần lặp tiếp theo.
  • break: dừng toàn bộ vòng lặp (thậm chí không tiếp tục các lần lặp sau đó nữa)

Ví dụ, bạn muốn in các số lẻ trong khoảng 1 đến 10:

for number in range(10):
    # nếu số hiện tại chia hết cho 2 (tức là số chẵn), bỏ qua lần lặp này và nhẩy đến số tiếp theo
    if (number % 2 == 0):
        continue;
    
    # dòng print dưới đây sẽ không được thực hiện nếu lệnh continue được chạy trước đó.
    print(number)

Hãy xem đoạn code này chạy ra sao trong Python Shell:

Sử dụng break để dừng vòng lặp hoàn toàn khi bạn tìm thấy số đầu tiên chia hết cho 5 trong khoảng 1 đến 10 (không bao gồm 10):

for number in range(1, 10):
    # nếu số hiện tại chia hết cho 5, in số đó ra màn hình và ngừng hoàn toàn vòng lặp
    if (number % 5 == 0):
        print(number)
        break