❮ Phương pháp toán học
Thí dụ
In vô cực dương và âm
# Nhập thư viện toán
nhập toán
# In ra số dương vô cực
in [toán học. thông tin]
# In vô cực âm
in [-math. thông tin]
Định nghĩa và cách sử dụng
Hằng số
iter_count = count[0]for i in range[10]:7 trả về một dấu phẩy động vô cực dương
print[next[iter_count]]
Đối với vô cực âm, hãy sử dụng
iter_count = count[0]for i in range[10]:8
print[next[iter_count]]
Hằng số inf tương đương với
iter_count = count[0]for i in range[10]:9
print[next[iter_count]]
cú pháp
chi tiết kỹ thuật
Giá trị trả về. Một giá trịiter_count = count[0]for i in range[10]:0, đại diện cho giá trị của vô cực dươngPhiên bản Python. 3. 5
print[next[iter_count]]
❮ Phương pháp toán học
Không còn nghi ngờ gì nữa, mô-đun tích hợp sẵn của Python, Itertools, khá mạnh mẽ. Quả thực, hầu như không ai có thể dùng một bài viết để giới thiệu nó từ trong ra ngoài. Do đó, tôi đã chọn ba hàm lặp giúp chúng tôi mang lại số lượng phần tử INFINITE. Tất nhiên, mô hình được xác định bởi chính chúng ta
- Đếm
- Đi xe đạp
- Nói lại
Tôi sẽ trình bày các chức năng này, cũng như các tình huống điển hình mà chúng ta có thể sử dụng chúng. Với những ví dụ này, bạn sẽ có một ý tưởng tốt hơn về những gì chúng được thiết kế cho. Nếu bạn có nhiều cách sáng tạo hơn để sử dụng chúng, vui lòng cho tôi biết
Hãy nhập chúng trước bất kỳ bản trình diễn nào
from itertools import count, cycle, repeat
1. itertools. đếm[]Ảnh của Pexels trên Pixabay
Mọi người đều có thể đếm. Nếu chúng ta không được yêu cầu dừng lại, về mặt lý thuyết, chúng ta có thể đếm mãi mãi. Trong thế giới Python, việc sử dụng hàm
iter_count = count[0]for i in range[10]:2 để tạo một chuỗi số là rất phổ biến. Tuy nhiên, chúng ta phải cho hàm biết rằng nó cần dừng tại điểm nào.
print[next[iter_count]]
Nhưng không phải cho chức năng
iter_count = count[0]for i in range[10]:3. Chúng ta không cần nói cho nó biết khi nào nên dừng, chỉ cần tiếp tục tiếp theo, tiếp theo và tiếp theo
print[next[iter_count]]
iter_count = count[0]for i in range[10]:
print[next[iter_count]]
Trong ví dụ trên, chúng tôi đã định nghĩa một trình vòng lặp bằng cách sử dụng hàm
iter_count = count[0]for i in range[10]:3. Chúng tôi nói nó nên bắt đầu từ 0, nhưng không cần cho biết khi nào nên dừng. Sau đó, chúng tôi sử dụng hàm
print[next[iter_count]]
iter_count = count[0]for i in range[10]:5 để lấy giá trị từ nó. Lặp lại 10 lần, 10 số được tạo bởi trình vòng lặp
print[next[iter_count]]
Hàm
iter_count = count[0]for i in range[10]:3 cũng chấp nhận tham số thứ hai cho bước tùy chỉnh. Bước mặc định sẽ là 1 nếu không được chỉ định
print[next[iter_count]]
iter_count = count[0.5, 0.5]for i in range [10]:
print[next[iter_count]]
Vì vậy, mỗi khi chúng ta nhận được số tiếp theo, 0. 5 sẽ được thêm vào thay vì 1
ví dụ 1. Nhận số chẵn và số lẻ
Chúng ta có thể dễ dàng sử dụng hàm
iter_count = count[0]for i in range[10]:3 để tạo ra một dãy Số học. Ví dụ: chúng ta có thể sử dụng nó để tạo danh sách các số lẻ hoặc số chẵn
print[next[iter_count]]
iter_count_odd = count[1, 2]
iter_count_even = count[0, 2]odds = [next[iter_count_odd] for _ in range[10]]
evens = [next[iter_count_even] for _ in range[10]]print[odds]
print[evens]
ví dụ 2. Sử dụng số đếm với chức năng zip
Giả sử chúng ta có một danh sách sinh viên. Bây giờ, chúng tôi muốn tự động gán ID sinh viên cho họ. ID sinh viên nên bắt đầu từ 150000. Ta có thể dùng hàm
iter_count = count[0]for i in range[10]:3 để làm việc này rất tiện lợi
print[next[iter_count]]
Trước tiên hãy tạo một danh sách giả tên sinh viên
iter_count = count[0]for i in range[10]:1
print[next[iter_count]]
Sau đó, hãy tạo ID sinh viên
iter_count = count[0]for i in range[10]:2
print[next[iter_count]]
Ở đây, điều quan trọng nhất là chúng ta không cần biết chúng ta có bao nhiêu học sinh. Ngoài ra, chúng tôi có thể dễ dàng chuyển đổi kết quả thành từ điển nếu cần thiết
2. itertools. đi xe đạpẢnh của Pexels trên Pixabay
Nhà máy lặp vô hạn thứ hai là hàm
iter_count = count[0]for i in range[10]:9. Không giống như hàm
print[next[iter_count]]
iter_count = count[0]for i in range[10]:3 sẽ tiếp tục đếm theo một hướng, hàm
print[next[iter_count]]
iter_count = count[0]for i in range[10]:9 sẽ lặp đi lặp lại một mẫu
print[next[iter_count]]
iter_count = count[0]for i in range[10]:6
print[next[iter_count]]
Trong ví dụ trên, danh sách chúng ta truyền vào có 3 phần tử. Trình vòng lặp được tạo bởi hàm
iter_count = count[0]for i in range[10]:9 sẽ điền từng cái một theo thứ tự. Khi tất cả các phần tử đã được sử dụng, nó sẽ quay lại từ đầu để lấy lại phần tử đầu tiên. Tiếp tục đạp xe. ]
print[next[iter_count]]
ví dụ 3. Sử dụng chu kỳ để tạo Bảng phân công luân phiên hàng ngày
Giả sử bạn đang ở trong một nhóm mà mọi người sẽ được luân phiên làm việc trong một ngày. Chúng ta cần tạo ra một danh sách công bằng. Xin lưu ý rằng ngẫu nhiên có thể không đủ công bằng. Ngoài ra, có thể ai đó sẽ gọi điện trong hơn một ngày liên tiếp, đây chắc chắn là điều chúng ta cần tránh
Trong trường hợp này, hàm
iter_count = count[0]for i in range[10]:9 sẽ giúp. Nhưng trước đó, trước tiên hãy tạo một danh sách các ngày
print[next[iter_count]]
iter_count = count[0]for i in range[10]:9
print[next[iter_count]]
Bây giờ, chúng ta có thể sử dụng hàm
iter_count = count[0.5, 0.5]for i in range [10]:4 với bộ lặp chu kỳ để tạo danh sách
print[next[iter_count]]
iter_count = count[0]for i in range[10]:1
print[next[iter_count]]
Nếu chúng ta có một năm để tạo, đừng lo lắng, chỉ cần sử dụng
iter_count = count[0]for i in range[10]:9 vì nó là vô hạn3. itertools. nói lại
print[next[iter_count]]
Ảnh của stevepb trên Pixabay
Nếu chúng ta muốn lặp lại một điều gì đó mãi mãi hoặc trong một số thời điểm nhất định thì hàm
iter_count = count[0.5, 0.5]for i in range [10]:6 luôn là lựa chọn tốt nhất trong Python. Đầu tiên, hãy tạo một trình vòng lặp vô hạn lặp đi lặp lại cho chúng ta cùng một thứ
print[next[iter_count]]
iter_count = count[0]for i in range[10]:4
print[next[iter_count]]
Xin lưu ý rằng hàm
iter_count = count[0.5, 0.5]for i in range [10]:6 cũng có tham số thứ hai tùy chọn để trở thành hữu hạn
print[next[iter_count]]
iter_count = count[0]for i in range[10]:0
print[next[iter_count]]
Trong ví dụ trên, chúng tôi đã tạo danh sách cùng một chuỗi cho 5 bản sao
Ví dụ 4. Nhanh hơn danh sách
Thật hợp lý khi đặt câu hỏi tại sao chúng ta cần hàm
iter_count = count[0.5, 0.5]for i in range [10]:6?
print[next[iter_count]]
iter_count = count[0]for i in range[10]:1
print[next[iter_count]]
Thật vậy, về khả năng đọc, điều này tốt hơn nhiều. Tuy nhiên, trình lặp lặp lại sẽ lưu kết quả vào bộ đệm, trong khi phép nhân danh sách sẽ tạo ra 5 chuỗi riêng biệt trong bộ nhớ
Chúng ta có thể thấy rằng trình lặp lặp lại nhanh hơn khoảng 4 lần trong trường hợp này. Nếu chúng ta cần nhiều hơn 5 lần, sự khác biệt về tốc độ sẽ còn lớn hơn
Ví dụ 5. Vòng lặp nhanh hơn phạm vi []
Rất phổ biến khi sử dụng
iter_count = count[0]for i in range[10]:2 khi chúng ta muốn lặp một thứ gì đó trong những thời điểm nhất định. Ví dụ,
print[next[iter_count]]
iter_count_odd = count[1, 2]0 sẽ lặp 10 lần
iter_count_even = count[0, 2]odds = [next[iter_count_odd] for _ in range[10]]
evens = [next[iter_count_even] for _ in range[10]]print[odds]
print[evens]
Tuy nhiên, khi chúng ta không cần đến
iter_count_odd = count[1, 2]1 đó, nghĩa là chúng ta không quan tâm đến các vòng lặp lặp lại, trình lặp lặp lại sẽ là một giải pháp tốt hơn về mặt hiệu suất
iter_count_even = count[0, 2]odds = [next[iter_count_odd] for _ in range[10]]
evens = [next[iter_count_even] for _ in range[10]]print[odds]
print[evens]
Chúng ta có thể thấy rằng sử dụng hàm
iter_count = count[0.5, 0.5]for i in range [10]:6 nhanh hơn gấp 2 lần so với hàm
print[next[iter_count]]
iter_count = count[0]for i in range[10]:2. Cái trước thắng vì tất cả những gì nó cần làm là cập nhật số lượng tham chiếu cho đối tượng
print[next[iter_count]]
iter_count_odd = count[1, 2]4 hiện có. Cái sau thua vì
iter_count_even = count[0, 2]odds = [next[iter_count_odd] for _ in range[10]]
evens = [next[iter_count_even] for _ in range[10]]print[odds]
print[evens]
iter_count = count[0]for i in range[10]:2 hoặc
print[next[iter_count]]
iter_count_odd = count[1, 2]6 cần sản xuất 10.000 đối tượng số nguyên riêng biệtBản tóm tắt
iter_count_even = count[0, 2]odds = [next[iter_count_odd] for _ in range[10]]
evens = [next[iter_count_even] for _ in range[10]]print[odds]
print[evens]
Ảnh của tanajona trên Pixabay
Trong bài viết này, tôi đã giới thiệu 3 trình lặp vô hạn của mô-đun Itertools của Python. Bằng cách biết chúng, đôi khi nó có thể cải thiện năng suất của chúng tôi ở mức độ lớn. Tuy nhiên, tôi cũng khuyên bạn nên cân bằng khả năng đọc và hiệu suất. Đừng luôn sử dụng mã để khoe khoang và chỉ sử dụng chúng khi cần thiết
Nếu bạn quan tâm đến các mô-đun tích hợp Python khác, vui lòng xem các bài viết liên quan này
Tham gia Medium với liên kết giới thiệu của tôi — Christopher Tao
Là thành viên Phương tiện, một phần phí thành viên của bạn sẽ được chuyển đến các tác giả mà bạn đã đọc và bạn có toàn quyền truy cập vào mọi câu chuyện…
vừa phải. com
Nếu bạn cảm thấy bài viết của tôi hữu ích, hãy cân nhắc tham gia Medium Membership để ủng hộ tôi và hàng ngàn người viết khác. [Nhấp vào liên kết ở trên]