Cho vòng lặp quá chậm python

Python là một trong những ngôn ngữ phổ biến nhất trên toàn thế giới. Ngày nay nó đang được sử dụng trong lập trình cạnh tranh cũng vì cú pháp đơn giản và thư viện phong phú của nó. Hầu hết chúng ta có lẽ đã bắt đầu viết mã với python. Lúc đầu, mọi thứ diễn ra đơn giản và dễ dàng. Nhưng trong khi giải một bài toán khó về thuật toán, hầu hết chúng ta đều mắc phải

L = [i for i in range [1, 1000] if i%3 == 0]
2. Tuy nhiên, đó không phải là vấn đề của trăn; . Tôi không nói rằng ngôn ngữ không chậm, nhưng nếu một lập trình viên viết một chương trình hiệu quả, chắc chắn nó sẽ nhận được
L = [i for i in range [1, 1000] if i%3 == 0]
3. Dưới đây là một số mẹo để tăng tốc chương trình python của bạn

Sử dụng cấu trúc dữ liệu thích hợp

Việc sử dụng cấu trúc dữ liệu phù hợp có ảnh hưởng đáng kể đến thời gian chạy. Python có danh sách, bộ dữ liệu, bộ và từ điển dưới dạng cấu trúc dữ liệu tích hợp. Tuy nhiên, hầu hết mọi người sử dụng danh sách trong mọi trường hợp. Nhưng đó không phải là một sự lựa chọn đúng đắn. Sử dụng cấu trúc dữ liệu phù hợp tùy thuộc vào nhiệm vụ của bạn. Đặc biệt sử dụng tuple thay vì danh sách. Bởi vì lặp qua tuple dễ hơn lặp qua danh sách

Giảm việc sử dụng vòng lặp for

Vì vòng lặp for là động trong python nên mất nhiều thời gian hơn vòng lặp while. Vì vậy, hãy sử dụng vòng lặp while thay vì vòng lặp for

Sử dụng hiểu danh sách

Không sử dụng bất kỳ kỹ thuật nào khác nếu bạn có thể sử dụng khả năng hiểu danh sách. Ví dụ: đây là mã để liệt kê tất cả các số từ 1 đến 1000 là bội số của 3

L = []
for i in range [1, 1000]:
    if i%3 == 0:
        L.append [i]

Sử dụng hiểu danh sách, nó sẽ là

L = [i for i in range [1, 1000] if i%3 == 0]

Khả năng hiểu danh sách hoạt động nhanh hơn so với sử dụng phương thức chắp thêm

Sử dụng nhiều bài tập

Không gán các biến như thế này

a = 2
b = 3
c = 5
d = 7

Thay vào đó, hãy gán các biến như thế này

a, b, c, d = 2, 3, 5, 7

Không sử dụng biến toàn cục

Python có từ khóa

L = [i for i in range [1, 1000] if i%3 == 0]
4 để khai báo biến toàn cục. Nhưng các biến toàn cục mất nhiều thời gian hơn trong quá trình hoạt động so với biến cục bộ. Vì vậy, không sử dụng biến toàn cục nếu không cần thiết

Sử dụng chức năng thư viện

Không viết chức năng của bạn [thủ công] nếu nó đã có trong thư viện. Các hàm thư viện có hiệu quả cao và có thể bạn sẽ không thể viết mã với hiệu quả đó

Trong python, bạn có thể nối các chuỗi bằng thao tác

L = [i for i in range [1, 1000] if i%3 == 0]
5

________số 8

Nó cũng có thể được thực hiện với phương pháp

L = [i for i in range [1, 1000] if i%3 == 0]
6

L = [i for i in range [1, 1000] if i%3 == 0]
0

L = [i for i in range [1, 1000] if i%3 == 0]
6 nối các chuỗi nhanh hơn hoạt động của
L = [i for i in range [1, 1000] if i%3 == 0]
5 vì các toán tử
L = [i for i in range [1, 1000] if i%3 == 0]
5 tạo một chuỗi mới và sau đó sao chép nội dung cũ ở mỗi bước. Nhưng
L = [i for i in range [1, 1000] if i%3 == 0]
6 không hoạt động theo cách đó

Sử dụng máy phát điện

Nếu bạn có một lượng lớn dữ liệu trong danh sách của mình và bạn cần sử dụng một dữ liệu tại một thời điểm và một lần thì hãy sử dụng

a = 2
b = 3
c = 5
d = 7
1s. Nó sẽ giúp bạn tiết kiệm thời gian

Nó có vẻ hiệu quả, nhưng nó không

Xem đoạn mã dưới đây

L = [i for i in range [1, 1000] if i%3 == 0]
6

Đoạn mã trên có vẻ hiệu quả vì nó được sử dụng để xóa dữ liệu trùng lặp. Nhưng thực tế là mã không hiệu quả. Đừng quên rằng việc chuyển đổi một danh sách thành tập hợp cần có thời gian. Vì vậy, mã này sẽ hoạt động tốt hơn mã trước

L = [i for i in range [1, 1000] if i%3 == 0]
7

Không sử dụng thao tác dấu chấm

Cố gắng tránh thao tác dấu chấm. Xem chương trình bên dưới

L = [i for i in range [1, 1000] if i%3 == 0]
8

Thay vì viết mã kiểu trên như thế này

L = [i for i in range [1, 1000] if i%3 == 0]
9

Bởi vì khi bạn gọi một hàm bằng cách sử dụng

a = 2
b = 3
c = 5
d = 7
2 [dấu chấm], trước tiên, nó sẽ gọi
a = 2
b = 3
c = 5
d = 7
3 hoặc
a = 2
b = 3
c = 5
d = 7
4, sau đó sử dụng thao tác từ điển gây tốn thời gian. Vì vậy, hãy thử sử dụng
a = 2
b = 3
c = 5
d = 7
5

Sử dụng 1 cho vòng lặp vô cực

Sử dụng

a = 2
b = 3
c = 5
d = 7
6 thay vì
a = 2
b = 3
c = 5
d = 7
7. Nó sẽ giảm một số thời gian chạy

Hãy thử một cách tiếp cận khác

Hãy thử những cách mới để viết mã của bạn một cách hiệu quả. Xem đoạn mã dưới đây

L = [i for i in range [1, 1000] if i%3 == 0]
0

Thay vì đoạn mã trên, bạn có thể viết

L = [i for i in range [1, 1000] if i%3 == 0]
1

Đối với tốc độ chậm của python, một số dự án đã được thực hiện để giảm thời gian chạy. Pypy và Numba hai trong số họ. Trong hầu hết các cuộc thi lập trình, bạn sẽ thấy pypy nếu nó cho phép python. Các ứng dụng này sẽ làm giảm thời gian chạy chương trình của bạn

Sử dụng các thư viện đặc biệt để xử lý các tập dữ liệu lớn

C/C++ nhanh hơn trăn. Vì vậy, nhiều gói và mô-đun đã được viết bằng C/C++ mà bạn có thể sử dụng trong chương trình python của mình.

a = 2
b = 3
c = 5
d = 7
8,
a = 2
b = 3
c = 5
d = 7
9 và
a, b, c, d = 2, 3, 5, 7
0 là ba trong số chúng và phổ biến để xử lý các tập dữ liệu lớn

Sử dụng phiên bản mới nhất của python

Python được cập nhật và nâng cấp thường xuyên và mọi bản phát hành đều nhanh hơn và tối ưu hơn. Vì vậy, hãy luôn sử dụng phiên bản mới nhất của python

Đây là một số mẹo để giảm thời gian chạy mã python. Có một vài kỹ thuật khác mà bạn có thể sử dụng. Sử dụng một công cụ tìm kiếm để tìm những thứ đó và viết mã hiệu quả

Vòng lặp Python có chậm không?

Việc lặp qua các mảng, danh sách hoặc từ điển Python, có thể chậm . Do đó, các hoạt động được vector hóa trong Numpy được ánh xạ tới mã C được tối ưu hóa cao, làm cho chúng nhanh hơn nhiều so với các đối tác Python tiêu chuẩn của chúng.

Bản đồ nào nhanh hơn hoặc cho vòng lặp Python?

Kết luận đầu tiên. Bản đồ nhanh hơn vòng lặp ?. Trong trường hợp này có. Nhưng chúng ta đang ở trong ngữ cảnh mili giây. Nhưng khi chúng ta cần quản lý một lượng dữ liệu khổng lồ thì mili giây rất quan trọng.

Vòng lặp nào nhanh hơn?

Vòng lặp for nhanh nhất nhưng khó đọc. foreach nhanh và việc lặp lại có thể kiểm soát được. for…of mất thời gian, nhưng nó ngọt ngào hơn. for…in mất thời gian, do đó ít thuận tiện hơn.

Tại sao mã Python của tôi quá chậm?

Không giống như các ngôn ngữ lập trình phổ biến khác bao gồm C# hoặc JAVA, Python là ngôn ngữ được nhập động và thông dịch. Nó chậm chủ yếu là do tính năng động và tính linh hoạt của nó .

Chủ Đề