Làm thế nào để bạn tạo một phạm vi vô cực trong python?

❮ 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]

Tự mình thử »

Định nghĩa và cách sử dụng

Hằng số

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
7 trả về một dấu phẩy động vô cực dương

Đối với vô cực âm, hãy sử dụng

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
8

Hằng số inf tương đương với

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
9

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]:
print[next[iter_count]]
0, đại diện cho giá trị của vô cực dươngPhiên bản Python. 3. 5

❮ 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]:
print[next[iter_count]]
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.

Nhưng không phải cho chức năng

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
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

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]:
print[next[iter_count]]
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
iter_count = count[0]for i in range[10]:
print[next[iter_count]]
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

Hàm

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
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

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]:
print[next[iter_count]]
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

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]:
print[next[iter_count]]
3 để làm việc này rất tiện lợi

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]:
print[next[iter_count]]
1

Sau đó, hãy tạo ID sinh viên

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
2

Ở đâ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]:
print[next[iter_count]]
9. Không giống như hàm
iter_count = count[0]for i in range[10]:
print[next[iter_count]]
3 sẽ tiếp tục đếm theo một hướng, hàm
iter_count = count[0]for i in range[10]:
print[next[iter_count]]
9 sẽ lặp đi lặp lại một mẫu

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
6

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]:
print[next[iter_count]]
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. ]

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]:
print[next[iter_count]]
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

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
9

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]:
print[next[iter_count]]
4 với bộ lặp chu kỳ để tạo danh sách

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
1

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]:
print[next[iter_count]]
9 vì nó là vô hạn

3. itertools. nói lại

Ả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]:
print[next[iter_count]]
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ứ

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
4

Xin lưu ý rằng hàm

iter_count = count[0.5, 0.5]for i in range [10]:
print[next[iter_count]]
6 cũng có tham số thứ hai tùy chọn để trở thành hữu hạn

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
0

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]:
print[next[iter_count]]
6?

iter_count = count[0]for i in range[10]:
print[next[iter_count]]
1

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]:
print[next[iter_count]]
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ụ,
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]
0 sẽ lặp 10 lần

Tuy nhiên, khi chúng ta không cần đến

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]
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

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]:
print[next[iter_count]]
6 nhanh hơn gấp 2 lần so với hàm
iter_count = count[0]for i in range[10]:
print[next[iter_count]]
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
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]
4 hiện có. Cái sau thua vì
iter_count = count[0]for i in range[10]:
print[next[iter_count]]
2 hoặc
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]
6 cần sản xuất 10.000 đối tượng số nguyên riêng biệt

Bản tóm tắt

Ả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]

Chủ Đề