Khả năng hiểu danh sách có tốt hơn vòng lặp for Python không?

Hiểu danh sách là cách tao nhã và nhanh hơn để tạo một danh sách mới với cú pháp ngắn hơn. Để hiểu danh sách, chúng tôi sử dụng vòng lặp for theo cách nó được viết chỉ trong một dòng mã, đó là lý do tại sao nó còn được gọi là vòng lặp for nội tuyến. Đầu ra của việc hiểu danh sách là một danh sách mới với các mục được tạo dựa trên vòng lặp for và/hoặc với các điều kiện được áp dụng cho nó. Dưới đây là cú pháp để hiểu danh sách,

Syntax:
[ for  in ]

LÀM VIỆC CỦA DANH SÁCH HIỂU

Để hiểu danh sách, đầu tiên chúng ta sẽ viết mã theo cú pháp trên. Ở đây, một vòng lặp for được tạo giống như một cách thông thường để truy cập giá trị trên mỗi lần lặp ngoại trừ biểu thức, ở đây biểu thức được trả về trong cùng một dòng mã trước khi vòng lặp for được viết. Bây giờ hãy hiểu nó chi tiết hơn với một ví dụ

Bây giờ nhiệm vụ của chúng ta là tạo một danh sách với bình phương của tất cả 10 số tự nhiên đầu tiên với vòng lặp for nội tuyến

output=[i**2 for i in range(1,11)]
print(output)
Output:
        [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Trong ví dụ trên, bạn có thể thấy việc viết một chương trình để tạo một danh sách chứa bình phương của tất cả 10 số tự nhiên đầu tiên dễ dàng như thế nào. Vì vậy, từ ví dụ trên bạn có thể hiểu i**2 là biểu thức trả về giá trị trên mỗi lần lặp đối với iterator (là hàm phạm vi trong trường hợp của chúng ta với các giá trị từ 1 đến 10)

Bây giờ hãy lấy một ví dụ khác về hiểu danh sách với câu lệnh điều kiện. Bây giờ nhiệm vụ của chúng ta là trả về một danh sách chứa bình phương của tất cả 10 số tự nhiên chẵn đầu tiên

output=[i**2 for i in range(1,20) if i%2==0]
print(output)
Output:
[4, 16, 36, 64, 100, 144, 196, 256, 324]

Như vậy, với ví dụ trên chắc hẳn bạn đã hiểu cách chúng ta có thể thêm câu lệnh điều kiện vào phần hiểu danh sách và cách kết quả được tạo ra trên cơ sở điều kiện. Trong ví dụ trên bạn có thể thấy chúng ta đã đặt điều kiện để kiểm tra một số có chẵn hay không trong khoảng từ 1 đến 20. Nếu số đó là số chẵn thì bình phương của số đó được trả về danh sách, ngược lại, không có gì được thực hiện

Khả năng hiểu danh sách nhanh hơn gấp 10 lần so với vòng lặp

Bây giờ hãy lấy ví dụ để chứng minh rằng vòng lặp nội tuyến thực thi nhanh hơn gần 10 lần so với vòng lặp bình thường. Dưới đây là mã để chứng minh rằng,

import time

## In-line for loop
t1=time.time()
output=[i**3 if i%2==0 else i**4 for i in range(1,20000) ]
time_list=time.time()-t1
print("Time taken for in-line for loop:",time_list,'seconds')

t2=time.time()
out=[]
for i in range(1,20000):
if i % 2 == 0:
out.append(i**3)
else:
out.append(i**4)
time_for=time.time()-t2
print("Time taken for normal for loop :",time_for,"seconds")
Khả năng hiểu danh sách có tốt hơn vòng lặp for Python không?

Bây giờ là lúc để kết thúc. Hy vọng bạn thích nội dung của chúng tôi về Cách thức và lý do sử dụng khả năng hiểu danh sách trong python. Hẹn gặp lại bạn trong blog tiếp theo của chúng tôi, cảm ơn vì đã đọc blog của chúng tôi và hãy để lại nhận xét bên dưới để giúp chúng tôi cải thiện nội dung để phục vụ bạn tất cả những trải nghiệm của chúng tôi với bạn. Hãy theo dõi chúng tôi để biết thêm nội dung python

Ngoài ra, hãy xem danh sách phát khác của chúng tôi Rasa Chatbot, Internet vạn vật, Docker, Lập trình Python, v.v.
Trở thành thành viên của gia đình xã hội của chúng tôi trên youtube tại đây

Hãy theo dõi và học tập vui vẻ

Nhà tài trợ

Khả năng hiểu danh sách có tốt hơn vòng lặp for Python không?

Ashish Saini

Tôi là nhà phát triển phần mềm cho Python/Machine Learning. Ngoài ra, tôi là Rasa Hero tại Rasa. Ngoài ra, tôi là một youtuber, nơi tôi thường xuyên tải lên các video để giúp thế hệ này tìm hiểu về công nghệ giống như họ đang chơi trò chơi

Hãy để chúng tôi lấy một tình huống trong đó tôi muốn lấy danh sách các số chẵn từ một dãy số đã cho. Chúng ta có thể lấy danh sách các số chẵn bằng cách sử dụng vòng lặp for như hình bên dưới

even_list = []
for i in range(10000):
    if i%2 == 0:
        even_list.append(i)

Như được hiển thị trong đoạn mã trên, chúng tôi đang cố gắng tạo danh sách các số chẵn từ 0 đến 9999. Điều tương tự cũng có thể đạt được bằng cách sử dụng tính năng hiểu danh sách trong một dòng như hình bên dưới

even_list =[i for i in range(10000) if i%2==0]

Vì vậy, để tạo một danh sách mới, khi chúng ta so sánh tốc độ thực hiện trong trường hợp vòng lặp for và khả năng hiểu danh sách, khả năng hiểu danh sách nhanh hơn hai lần so với vòng lặp for. Hiệu suất của việc hiểu danh sách giảm đi một chút khi độ phức tạp của thao tác được thực hiện tăng lên, tuy nhiên, việc hiểu danh sách quản lý để có tốc độ xử lý tốt hơn so với vòng lặp for. Trong ví dụ trên, phép toán i%2 là phép toán đơn giản nên tốc độ hiểu danh sách tốt hơn 2 lần so với vòng lặp for. Hãy để chúng tôi lấy ví dụ dưới đây

________số 8_______

Ở đây, chúng ta đang nhân mọi phần tử với 3 và sau đó kết quả phép nhân được thực hiện một phép toán lũy thừa với 4 và đây là một phép toán phức tạp. Logic hiểu danh sách tương đương được hiển thị bên dưới

list2 =[(i*3)**4 for i in range(10000)]

Thậm chí, trong trường hợp này, việc hiểu danh sách có hiệu suất tốt hơn vòng lặp for, nhưng bây giờ nó không nhanh gấp 2 lần, nó giống như 1 hơn. Nhanh hơn gấp 2 lần so với vòng lặp for, do đó chắc chắn hiệu suất của việc hiểu danh sách sẽ giảm khi độ phức tạp của thao tác tăng lên

Tại sao bạn có thể sử dụng khả năng hiểu danh sách thay vì vòng lặp trong Python?

Việc hiểu danh sách cũng mang tính khai báo hơn vòng lặp, nghĩa là chúng dễ đọc và dễ hiểu hơn . Vòng lặp yêu cầu bạn tập trung vào cách tạo danh sách. Bạn phải tạo danh sách trống theo cách thủ công, lặp qua các phần tử và thêm từng phần tử vào cuối danh sách.

Khả năng hiểu danh sách có giống như vòng lặp for không?

Sự khác biệt giữa khả năng hiểu danh sách và vòng lặp for. Vòng lặp for là một cách phổ biến để lặp qua một danh sách. Mặt khác, việc hiểu danh sách là một cách hiệu quả hơn để lặp qua danh sách vì nó yêu cầu ít dòng mã hơn.

Điều gì hiệu quả hơn vòng lặp for Python?

Một cách nhanh hơn để lặp trong Python là sử dụng các hàm tích hợp sẵn . Trong ví dụ của chúng tôi, chúng tôi có thể thay thế vòng lặp for bằng hàm tổng. Hàm này sẽ tính tổng các giá trị bên trong dãy số.

Python hiểu danh sách nhanh hơn bao nhiêu?

Từ các ô được tính thời gian bên dưới, bạn có thể thấy rằng quá trình hiểu danh sách chạy nhanh gần gấp đôi so với vòng lặp for cho phép tính này. Đây là một trong những lợi ích chính của việc sử dụng hiểu danh sách.