Bài 39. VÒNG LẶP FOR (FOR LOOP) P3 (RANGE, COMPREHENSION)

I. Kiểu Dữ Liệu Range

  Kiểu dữ liệu range (dãy số) là kiểu dữ liệu mà ta có thể lấy dữ liệu từ nó, nhưng bản chất thì nó không lưu trữ những dữ liệu mà chúng ta lấy.
Cách khởi tạo:
Cách 1 –  Cú pháp: 
range(stop)
Dãy số này bắt đầu từ 0 và kết thúc tại (stop – 1), các số trong dãy tịnh tiến 1 đơn vị. Lưu ý stop luôn > 0
Cách 2 –  Cú pháp: 
range(start, stop [,step])
Dãy số này bắt đầu từ start và kết thúc tại (stop – 1), các số trong dãy tịnh tiến step đơn vị, nếu step không được truyền vào thì mặc định là 1 đơn vị.

Ví dụ 1 (cách 1):
Các câu lệnh:

#Khởi tạo biến 1

x1 = range(3)
print(type(x1)) #Kiểm tra type của x1
print(x1) #In ra biến 1
#Dùng vòng lặp for để duyệt hết các phần tử trong biến 1
for i in x1:
    print(i) #in ra các phần tử

 Kết quả trả ra:
<class ‘range’>
range(0, 3)
0
1
2

Ví dụ 2 (cách 2):
Các câu lệnh:

#Khởi tạo biến 1, 2 và 3

x1 = range(2,6)
x2 = range(2,6,1)
x3 = range(6,2,-1)
print(x1) #In ra biến 1
print(x2) #In ra biến 2
print(x3) #In ra biến 3
#Dùng vòng lặp for để duyệt hết các phần tử trong biến 3
for i in x3:
    print(i) #in ra các phần tử

 Kết quả trả ra:
range(2, 6)
range(2, 6)
range(6, 2, -1)
6
5
4
3

II. Dùng vòng lặp For duyệt qua List, Tuple hoặc String

 Kiểu dữ liệu Range rất hữu dụng khi chúng ta muốn truy xuất các phần tử trong list, tuple hoặc string.

Ví dụ 4:
Các câu lệnh:

#Khởi tạo list1

list1 = [(‘a’,’b’,’c’), “we”, {1, “python” }]
#Dùng vòng lặp for để duyệt hết các phần tử trong list 1
for i in range(len(list1)): #biến i ở đây là index các phần tử trong list1
    print(list1[i]) #in ra các phần tử

 Kết quả trả ra:
(‘a’, ‘b’, ‘c’)
we
{‘python’, 1}

Ở đây, hàm len sẽ đếm số phần tử của list1, do đó range(len(list1)) sẽ giúp ta truy xuất index của các phần tử trong list1

III. Comprehension

Các bạn đã gặp Comprehension đối với List và thấy nó rất tiện dụng đúng ko ?
Cú pháp:
|| f(x) for x in iterable if condition || 
+ Đối với list: || || sẽ thay bằng [ ]
+ Đối với set và dict: || || sẽ thay bằng { }
+ f(x) là đầu ra mong muốn, x là biến duyệt qua iterable (list, tuple, string), if condition là điều kiện.

Ví dụ 5 (vòng lặp for không dùng comprehension):
Các câu lệnh:

#Khởi tạo list rỗng

list1 = [ ]
#Khởi tạo list 2
list2 = [(“one”,”two”,”three”), (“four”,”five”,”six”)]
#Dùng vòng lặp for với biến a,b,c lần lượt duyệt qua các phần tử của list 2
for a,b,c in list2:
    list1.append(” “.join(a,b,c))
#ghép các biến a,b,c thành 1 phần tử, phân chia bởi dầu cách và append vào list1
print(list1) #In ra list1

 Kết quả trả ra:
[‘one two three’, ‘four five six’]

Ví dụ 6 (vẫn là ví dụ 5 nhưng sử dụng comprehension):Các câu lệnh:

#Câu lệnh Comprehension (1 dòng)
print([” “.join((a,b,c)) for a,b,c in [(“one”,”two”,”three”), (“four”,”five”,”six”)]])

 Kết quả trả ra:
[‘one two three’, ‘four five six’]

Với comprehension, 1 đoạn lệnh dài dòng sẽ thu lại thành 1 câu lệnh duy nhất, rất tiện dụng phải không ? Các bạn hãy thực hành Comprehension nhiều vào nhé.

IV. Kết Luận

Như vậy, chúng tôi đã tiếp tục giới thiệu tới các bạn các khái niệm cơ bản của vòng lặp for trong Python. Nếu có vấn đề nào chưa rõ, các bạn hãy liên hệ với chúng tôi để được giúp đỡ.

Trả lời

Email của bạn sẽ không được hiển thị công khai.