Python hỗ trợ các kỹ thuật lặp khác nhau bằng các hàm tích hợp nhất định, trong các mục tuần tự khác nhau. Các phương thức này rất hữu ích trong lập trình cạnh tranh và trong các dự án khác nhau đòi hỏi một kỹ thuật cụ thể với các vòng lặp duy trì cấu trúc code tổng thể.

1. Chúng được sử dụng ở đâu?

Các kỹ thuật lặp khác nhau hữu ích ở những nơi chúng ta không thực sự phải thao tác cấu trúc và trật tự của một container tổng thể, thay vì chỉ in các phần tử cho một instance đơn dùng, không có thay đổi tại chỗ nào trong container. Điều này cũng có thể được sử dụng trong các instance để tiết kiệm thời gian.

2. Các kỹ thuật lặp khác nhau sử dụng cấu trúc dữ liệu Python là:

  • Kỹ thuật sử dụng enumerate():   enumerate() được sử dụng để lặp qua các container in các số chỉ mục cùng với các giá trị biểu thị có trong chỉ mục cụ thể đó.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# python code to demonstrate working of enumerate() 
  
for key, value in enumerate(['Cafedev', 'trang', 'thông', 'tin', 'IT']): 
    print(key, value) 

Kết quả:

0 Cafedev
1 trang
2 thông
3 tin
4 IT
  • Kỹ thuật sử dụng zip():  zip() được sử dụng để kết hợp 2 container tương tự (list-list hoặc dict-dict) in các giá trị theo trình tự. Vòng lặp chỉ tồn tại cho đến khi container nhỏ hơn kết thúc. Có thể tìm thấy giải thích chi tiết về zip() và enumerate() tại đây.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# python code to demonstrate working of zip() 
  
# initializing list 
questions = ['name', 'colour', 'shape'] 
answers = ['apple', 'red', 'a circle'] 
  
# using zip() to combine two containers  
# and print values 
for question, answer in zip(questions, answers): 
    print('What is your {0}?  I am {1}.'.format(question, answer)

Kết quả:

What is your name?  I am apple.
What is your color?  I am red.
What is your shape?  I am a circle.
  • Kỹ thuật sử dụng iteritems():  iteritems() được sử dụng để lặp qua từ điển, in các cặp key-value thuộc từ điển theo trình tự.
  • Kỹ thuật sử dụng items():  items() thực hiện tác vụ trên từ điển tương tự như iteritems() nhưng có những nhược điểm nhất định so iteritems().
    • Nó rất tốn thời gian. Gọi nó trên từ điển lớn tiêu tốn khá nhiều thời gian.
    • Phải mất rất nhiều bộ nhớ. Đôi khi mất gấp đôi bộ nhớ khi được gọi trong từ điển.
  • Ví dụ 1:

# python code to demonstrate working of iteritems(),items() 
  
d = { "cafedev" : "for", "only" : "ITer" } 
  
# using iteritems to print the dictionary key-value pair 
print ("The key value pair using iteritems is : ") 
for i,j in d.iteritems(): 
    print i,j 
      
# using items to print the dictionary key-value pair 
print ("The key value pair using items is : ") 
for i,j in d.items(): 
    print i,j 

Kết quả:

The key value pair using iteritems is : 
cafedev for
only ITer
The key value pair using items is : 
cafedev for
only ITer
  • Ví dụ 2:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# python code to demonstrate working of items() 
  
king = {'Akbar': 'The Great', 'Chandragupta': 'The Maurya',  
        'Modi' : 'The Changer'} 
  
# using items to print the dictionary key-value pair 
for key, value in king.items(): 
    print(key, value) 

Kết quả:

Akbar The Great
Modi The Changer
Chandragupta The Maurya

Lưu ý: iteritems() đã bị xóa khỏi python 3.x, nó chỉ hoạt động trong python 2.x. thay vào đó, ta sử dụng dict.items().

  • Kỹ thuật sử dụng sort(): sort() được sử dụng để in container được sắp xếp theo thứ tự . Nó không sắp xếp container , mà chỉ in container theo thứ tự được sắp xếp cho 1 instance. Chúng ta có thể kết hợp với việc sử dụng set()  để loại bỏ các lần xuất hiện trùng lặp.
  • Ví dụ 1:

# python code to demonstrate working of sorted() 
  
# initializing list 
lis = [ 1 , 3, 5, 6, 2, 1, 3 ] 
  
# using sorted() to print the list in sorted order 
print ("The list in sorted order is : ") 
for i in sorted(lis) : 
    print (i,end=" ") 
      
print ("\r") 
      
# using sorted() and set() to print the list in sorted order 
# use of set() removes duplicates. 
print ("The list in sorted order (without duplicates) is : ") 
for i in sorted(set(lis)) : 
    print (i,end=" ") 

Kết quả:

The list in sorted order is : 
1 1 2 3 3 5 6 
The list in sorted order (without duplicates) is : 
1 2 3 5 6 
  • Ví dụ 2:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# python code to demonstrate working of sorted() 
  
# initializing list 
basket = ['guave', 'orange', 'apple', 'pear',  
          'guava', 'banana', 'grape'] 
  
# using sorted() and set() to print the list 
#  in sorted order 
for fruit in sorted(set(basket)): 
    print(fruit) 

Kết quả:

apple
banana
grape
guava
guave
orange
pear
  • Kỹ thuật sử dụng Reversed():  Reverseed() được sử dụng để in các giá trị của container theo thứ tự đảo ngược .
    Lưu ý: Nó không phản ánh bất kỳ thay đổi nào đối với list gốc
  • Ví dụ 1:

# python code to demonstrate working of reversed() 
  
# initializing list 
lis = [ 1 , 3, 5, 6, 2, 1, 3 ] 
  
  
# using revered() to print the list in reversed order 
print ("The list in reversed order is : ") 
for i in reversed(lis) : 
    print (i,end=" ") 

Kết quả:

The list in reversed order is : 
3 1 2 6 5 3 1 
  • Ví dụ 2:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# python code to demonstrate working of reversed() 
  
# using reversed() to print in reverse order 
for i in reversed(range(1, 10, 3)): 
    print (i) 

Kết quả:

7
4
1

3. Lợi thế của việc sử dụng các kỹ thuật trên trong vòng lặp for, while loop

  • Những kỹ thuật này sử dụng nhanh chóng và giảm thiểu đầu tư mã hóa. Các vòng lặp while, for cần thay đổi toàn bộ cấu trúc của container.
  • Các kỹ thuật lặp này không yêu cầu bất kỳ thay đổi cấu trúc nào đối với container. Chúng có các từ khóa trình bày mục đích chính xác của việc sử dụng. Trong khi đó, chúng ta không thể dự đoán trước điều gì được đưa ra trong vòng lặp for, while, tức là không thể hiểu mục đích trong nháy mắt được.
  • Kỹ thuật vòng lặp làm cho code ngắn gọn hơn so với việc sử dụng vòng lặp for, while.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!