Itertools có trong thư viện chuẩn Python không?

Tuy nhiên, vấn đề về itertools là chỉ biết định nghĩa của các chức năng mà nó chứa là chưa đủ. Sức mạnh thực sự nằm ở việc kết hợp các chức năng này để tạo mã nhanh, tiết kiệm bộ nhớ và đẹp mắt. Vì vậy, ở đây chúng ta sẽ xem xét các định nghĩa cùng với một số ví dụ thực tế về các hàm để hiểu ứng dụng của chúng

Để có cái nhìn tổng quan, chúng ta hãy xem tài liệu chính thức của mô-đun nói gì

Mô-đun chuẩn hóa một tập hợp cốt lõi gồm các công cụ nhanh, hiệu quả về bộ nhớ, hữu ích khi sử dụng riêng lẻ hoặc kết hợp. Cùng với nhau, chúng tạo thành một “đại số lặp” để có thể xây dựng các công cụ chuyên dụng một cách ngắn gọn và hiệu quả bằng Python thuần túy

Itertools cung cấp cho chúng ta ba loại trình vòng lặp khác nhau

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

Bây giờ chúng ta hãy đi sâu vào nó

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

Các trình vòng lặp Python như danh sách, bộ dữ liệu, từ điển đều đầy đủ. Nhưng nó không cần thiết để một iterator cạn kiệt vào một lúc nào đó, chúng có thể tiếp tục mãi mãi. Hãy xem xét ba loại trình vòng lặp vô hạn

  1. đếm [bắt đầu = 0, bước = 1]. Trình lặp này bắt đầu trả về các giá trị từ 'bắt đầu' và tiếp tục vô tận, nếu các bước được cung cấp thì các giá trị đó sẽ bị bỏ qua. Hãy xem các ví dụ để xem nó hoạt động như thế nào

    Chúng ta cũng có thể truyền các đối số phủ định và đối số động cho hàm này

  2. chu kỳ [có thể lặp lại]. Nó trả về tất cả các giá trị từ đối số đã truyền. Khi đối tượng iterable cạn kiệt, nó bắt đầu in lại từ đầu

    Bây giờ sử dụng chức năng tiếp theo để in các giá trị

  3. lặp lại [đối tượng [, lần]]. Điều này tạo ra một trình vòng lặp trả về đối tượng nhiều lần. Chạy vô thời hạn trừ khi đối số thời gian được chỉ định

    Một cách sử dụng phổ biến của trình vòng lặp này là cung cấp một luồng giá trị cho map[] hoặc zip[]

Đó là tất cả về vòng lặp vô hạn. Từ các ví dụ trên, rõ ràng là có thể có những tình huống mà những điều này có ích. Bây giờ, hãy xem xét thực tế của thư viện itertools. Các trình vòng lặp kết thúc

Chấm dứt vòng lặp

Các trình vòng lặp này được sử dụng để hoạt động trên các chuỗi hữu hạn và tạo đầu ra dựa trên hàm được sử dụng

  1. tích lũy [có thể lặp lại [, func, *, ban đầu = Không]]. Điều này tạo ra một trình vòng lặp trả về kết quả tích lũy của các hàm nhị phân [được chỉ định thông qua đối số func tùy chọn]. Nếu cung cấp func, nó phải là một hàm của hai đối số. Các phần tử của đầu vào có thể lặp lại có thể là bất kỳ loại nào có thể được chấp nhận làm đối số cho func. Nó sẽ trở nên rõ ràng hơn với một số ví dụ

    Hãy chuyển đối số func tùy chọn cho accumulate.

    Nó rất giống với functools.reduce[] chỉ trả về giá trị tích lũy cuối cùng, nhưng đó là câu chuyện của một ngày khác

  2. chuỗi [* iterables]. Điều này tạo ra một trình lặp trả về các phần tử từ lần lặp đầu tiên cho đến khi hết, sau đó chuyển sang lần lặp tiếp theo, cho đến khi tất cả các lần lặp đã hết. Nói cách khác, nó tạo ra một 'trình tự' duy nhất từ ​​một chuỗi các trình tự. Nó có một hàm chain.from_iterabe[] hoạt động theo cách tương tự, nhưng nó nhận một đối số là một danh sách các danh sách thay vì nhiều danh sách
  3. nén [dữ liệu, bộ chọn]. Điều này tạo ra một trình vòng lặp lọc các phần tử từ dữ liệu chỉ trả về những phần tử có phần tử tương ứng trong bộ chọn có giá trị là True. Nó dừng lại khi một trong hai người cạn kiệt
  4. dropwhile [vị ngữ, có thể lặp lại]. Trình lặp này chỉ bắt đầu trả về các ký tự sau khi đối số predicate trong trả về false lần đầu tiên
  5. filterfalse[vị ngữ, có thể lặp lại]. Điều này tạo ra một iterator lọc các phần tử từ iterable chỉ trả về những phần tử mà vị từ là False. Nếu vị ngữ là None, nó trả về các mục sai
  6. nhóm [có thể lặp lại, khóa = Không]. Điều này tạo ra một trình lặp trả về các khóa và nhóm liên tiếp từ trình lặp. Khóa là một hàm tính toán giá trị khóa cho từng phần tử. Nếu không được chỉ định hoặc là func0, khóa sẽ mặc định là hàm nhận dạng và trả về phần tử không thay đổi
  7. islice[có thể lặp lại, bắt đầu, dừng [, bước]]. Trình lặp này trả về một cách có chọn lọc các giá trị từ vùng chứa có thể lặp lại được chuyển làm đối số. Không giống như cắt thông thường, nó không hỗ trợ các giá trị âm
  8. starmap [chức năng, có thể lặp lại]. Trình vòng lặp này nhận một hàm và một danh sách các bộ làm đối số và trả về giá trị theo hàm từ mỗi bộ trong danh sách
  9. mất thời gian [vị ngữ, lặp lại]. Điều này tạo ra một iterator trả về các phần tử từ iterable miễn là vị từ là đúng. Nó trái ngược với func1
  10. tee[có thể lặp lại, n=2]. Đơn giản này trả về n trình vòng lặp độc lập từ một lần lặp duy nhất. Nếu n không được thông qua, giá trị mặc định của n là 2
  11. zip_longest[*iterables, fillvalue=None]. Điều này Tạo một trình lặp tổng hợp các phần tử từ mỗi lần lặp. Nếu các lần lặp có độ dài không đồng đều, các giá trị còn thiếu sẽ được điền vào bằng func2. Lặp lại tiếp tục cho đến khi hết lần lặp dài nhất

Đây là tất cả các trình vòng lặp kết thúc được cung cấp bởi mô-đun. Bạn có thể thấy rõ sự đa dạng của các chức năng được cung cấp bởi các trình vòng lặp này. Chúng có thể được sử dụng trong mã của bạn để làm cho mã ngắn hơn, hiệu quả hơn và cũng “trăn trở” hơn

Tôi hy vọng rằng bạn thấy những lời giải thích này dễ hiểu và các ví dụ đã giúp bạn nắm bắt được tất cả. Khi bạn tiếp tục, bạn sẽ tìm thấy nhiều ứng dụng hay hơn của các chức năng này trong việc giải quyết các vấn đề của bạn

Điều này kết thúc bài viết này và tôi sẽ quay lại với phần thứ hai của Làm chủ các công cụ lặp, nơi chúng ta sẽ thấy các trình vòng lặp tổ hợp cùng với một số ví dụ phức tạp hơn về tất cả các hàm. Nếu bạn có bất kỳ đề xuất, phản hồi nào hoặc chỉ đơn giản là muốn kết nối, tôi rất sẵn lòng liên hệ. Bạn có thể kết nối với tôi trên LinkedIn hoặc tìm một số tác phẩm của tôi trên Github

Python Itertools có được viết bằng C không?

Mã nguồn thực tế được viết bằng C và có thể tìm thấy trong tệp itertoolsmodule.

Bộ sưu tập có phải là thư viện Python chuẩn không?

Python có rất nhiều thư viện tuyệt vời được bao gồm sẵn. Một trong số đó là bộ sưu tập. Mô-đun bộ sưu tập cung cấp “kiểu dữ liệu vùng chứa hiệu suất cao” cung cấp các lựa chọn thay thế cho lệnh, danh sách, bộ và bộ chứa mục đích chung của vùng chứa .

Thêm Itertools trong Python là gì?

Mô-đun itertools của Python cung cấp một số chức năng cho phép tạo các trình vòng lặp để thực hiện các hoạt động lặp hiệu quả. more-itertools là thư viện Python mang lại chức năng bổ sung để hoạt động với các lần lặp .

Làm cách nào để nhận hoán vị của danh sách trong Python mà không cần itertools?

Để tạo các kết hợp mà không cần sử dụng itertools, lặp lại danh sách từng cái một và sửa phần tử đầu tiên của danh sách rồi thực hiện kết hợp với danh sách còn lại. Similarly, iterate with all the list elements one by one by recursion of the remaining list.

Chủ Đề