Chu kỳ itertools làm gì trong python?

Itertool là một trong những thư viện chuẩn Python 3 tuyệt vời nhất. Thư viện này có khá nhiều chức năng thú vị nhất và không có gì sai khi nói rằng nó là viên ngọc quý của ngôn ngữ lập trình Python. Python cung cấp tài liệu tuyệt vời về itertools nhưng trong hướng dẫn này, chúng ta sẽ thảo luận về một số hàm hoặc trình lặp quan trọng và hữu ích của itertools

Điều quan trọng về itertools là các chức năng của thư viện này được sử dụng để tạo mã chính xác và tiết kiệm bộ nhớ

Trước khi học Python itertools, bạn nên có kiến ​​thức về Python iterator và generators. Trong bài viết này, chúng tôi sẽ mô tả itertools cho người mới bắt đầu cũng như cho các chuyên gia

Giới thiệu

Theo định nghĩa chính thức của itertools, "mô-đun này triển khai một số khối xây dựng trình vòng lặp lấy cảm hứng từ các cấu trúc từ APL, Haskell và SML. " Nói một cách đơn giản, số lượng vòng lặp có thể cùng nhau tạo ra 'đại số vòng lặp' để có thể hoàn thành nhiệm vụ phức tạp. Các chức năng trong itertools được sử dụng để tạo các trình vòng lặp phức tạp hơn. Hãy lấy một ví dụ. Hàm zip[] tích hợp sẵn của Python chấp nhận bất kỳ số lượng đối số nào có thể lặp lại. Nó lặp qua các bộ dữ liệu và trả về các phần tử tương ứng của chúng

đầu ra

[[1, 'a'], [2, 'b'], [3, 'c']]

Trong đoạn mã trên, chúng tôi đã chuyển hai danh sách [1,2,3] và ['a', 'b', 'c'] dưới dạng có thể lặp lại trong hàm zip[]. Các danh sách này trả về một phần tử tại một thời điểm. Trong Python, một phần tử triển khai. __iter__[] hoặc. phương thức __getitem__[] được gọi là iterable

Hàm iter[] trong Python được sử dụng để gọi iterable và trả về đối tượng iterable của iterable

đầu ra

Hàm zip[] của Python gọi iter[] trên mỗi đối số của nó và sau đó gọi next[] bằng cách kết hợp kết quả vào bộ dữ liệu

Ghi chú. Nếu bạn đang sử dụng hàm zip[] và hàm map[] có nghĩa là bạn đã sử dụng itertools. Bạn không cần phải nhập nó một cách rõ ràng

Các loại Iterator

Có nhiều loại trình vòng lặp khác nhau trong mô-đun itertools. Danh sách được đưa ra dưới đây

  • Trình vòng lặp vô hạn
  • vòng lặp tổ hợp
  • Chấm dứt vòng lặp

Trình vòng lặp vô hạn

Trong Python, bất kỳ đối tượng nào có thể triển khai vòng lặp for đều được gọi là iterators. Danh sách, bộ dữ liệu, tập hợp, từ điển, chuỗi là ví dụ về trình lặp nhưng trình lặp cũng có thể là vô hạn và loại trình lặp này được gọi là trình lặp vô hạn

IteratorArgumentResultscount[start,step]start, [step]start, start+step, step+2*stepcycle[]Pp0,p1,…. plastrepeat[]elem [,n]elem,elem,elem,…. vô tận hoặc tối đa n lần
  • đếm [bắt đầu, dừng]. Nó in từ giá trị bắt đầu đến vô hạn. Đối số bước là tùy chọn, nếu giá trị được cung cấp cho bước thì số bước sẽ bị bỏ qua. Xem xét ví dụ sau

đầu ra

  • chu kỳ [có thể lặp lại]. Trình lặp này in tất cả giá trị theo trình tự từ đối số đã truyền. Nó in các giá trị một cách tuần hoàn. Xem xét ví dụ sau

đầu ra

Ví dụ - 2. Sử dụng hàm next[]

đầu ra

Java T Point Java T Point

  • lặp lại [val, số]. Như tên gợi ý, nó liên tục in giá trị đã truyền trong thời gian vô hạn. Đối số num là tùy chọn. Xem xét ví dụ sau

đầu ra

[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40]

vòng lặp tổ hợp. Các cấu trúc tổ hợp phức tạp được đơn giản hóa bằng các trình tạo đệ quy. Các hoán vị, tổ hợp và các sản phẩm Descartes là ví dụ về cấu trúc tổ hợp

Trong Python, có bốn loại trình lặp tổ hợp

  • Product[] - Nó được sử dụng để tính tích cartesian của đầu vào có thể lặp lại. Trong chức năng này, chúng tôi sử dụng đối số từ khóa lặp lại tùy chọn để tính toán tích của một lần lặp với chính nó. Từ khóa repeat đại diện cho số lần lặp lại. Nó trả về đầu ra ở dạng bộ dữ liệu được sắp xếp. Xem xét ví dụ sau

đầu ra

Computing cartesian product using repeat Keyword Argument:
[[1, 1], [1, 2], [2, 1], [2, 2]]

Computing cartesian product of the containers:
[['Java', '5'], ['T', '5'], ['point', '5']]

Computing product of the containers:
[['C', 4], ['C', 5], ['D', 4], ['D', 5]] 

  • Hoán vị[]. Nó được sử dụng để tạo ra tất cả các hoán vị có thể có của một lần lặp. Tính duy nhất của mỗi phần tử phụ thuộc vào vị trí của chúng thay vì giá trị. Nó chấp nhận hai đối số iterable và group_size. Nếu giá trị của group_size không có hoặc không được chỉ định thì group_size sẽ chuyển thành độ dài của lần lặp

đầu ra

Computing all permutation of the following list
[[3, 'Python'], ['Python', 3]]

Permutations of following string
[['A', 'B'], ['B', 'A']]

Permutation of the given container is:
[[0, 1], [0, 2], [0, 3], [1, 0], [1, 2], [1, 3], [2, 0], [2, 1], [2, 3], [3, 0], [3, 1], [3, 2]]

  • Kết hợp[]. Nó được sử dụng để in tất cả các kết hợp có thể [không thay thế] của vùng chứa được truyền dưới dạng đối số trong kích thước nhóm được chỉ định theo thứ tự được sắp xếp

đầu ra

Combination of list in sorted order[without replacement] [['B', 3]]
Combination of string in sorted order [['Z', 'X']]
Combination of list in sorted order [[0,], [1,], [2,], [3,], [4,], [5,], [6,], [7,], [8,], [9,]]

  • Combinations_with_replacement[]. Nó chấp nhận hai đối số, đối số đầu tiên là một bộ có độ dài r và đối số thứ hai là sự lặp lại. Nó trả về một dãy con có độ dài n từ các phần tử của iterable và lặp lại quy trình tương tự. Các phần tử riêng biệt có thể tự lặp lại trong tổ hợp_with_replacement[]

đầu ra

Combination of string in sorted order[with replacement] is:
[['X', 'X', 'X'], ['X', 'X', 'Y'], ['X', 'Y', 'Y'], ['Y', 'Y', 'Y']]

Combination of list in sorted order[with replacement] is:
[[4, 4, 4], [4, 4, 2], [4, 2, 2], [2, 2, 2]]

Combination of container in sorted order[with replacement] is:
[[0, 0], [0, 1], [0, 2], [1, 1], [1, 2], [2, 2]]

Chấm dứt Iterator

Trình lặp kết thúc thường được sử dụng để hoạt động trên chuỗi đầu vào nhỏ và tạo đầu ra dựa trên chức năng của phương thức được sử dụng trong trình vòng lặp

Chức năng chu trình từ Itertools Module 2 là gì?

Hàm cycle[] chấp nhận một iterable và tạo một iterator chứa tất cả các phần tử của iterable . Ngoài các phần tử này, nó chứa một bản sao của từng phần tử.

Mục đích của Itertools trong Python là gì?

Itertools là một mô-đun trong Python, nó được sử dụng để lặp qua các cấu trúc dữ liệu có thể được chuyển qua bằng vòng lặp for . Cấu trúc dữ liệu như vậy còn được gọi là iterables. Mô-đun này hoạt động như một công cụ nhanh, tiết kiệm bộ nhớ, được sử dụng riêng lẻ hoặc kết hợp để tạo thành đại số lặp.

Sự khác biệt giữa chu kỳ và lặp lại trong Python là gì?

repeat trả về cùng một đối tượng nhiều lần và itertools. chu kỳ lặp đi lặp lại trên cùng một đối tượng .

Chu kỳ trong Python là gì?

chu kỳ[]. Phương thức này in tất cả các giá trị được cung cấp làm đối số cho phương thức này . Và một lần nữa nó bắt đầu lại từ đầu khi nó kết thúc. Để chấm dứt điều này, chúng ta cần giữ một điều kiện chấm dứt.

Chủ Đề