Hướng dẫn dùng scipy combinations python
Python’s Itertool là một mô-đun cung cấp các chức năng khác nhau hoạt động trên các trình vòng lặp để tạo ra các trình vòng lặp phức tạp. 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ố trình lặp. Ví dụ: giả sử có hai danh sách và bạn muốn nhân các phần tử của chúng. Có thể có một số cách để đạt được điều này. Người ta có thể sử dụng cách tiếp cận ngây thơ, tức là bằng cách lặp lại đồng thời các phần tử của cả hai danh sách và nhân chúng lên. Và một cách tiếp cận khác có thể là sử dụng hàm bản đồ, tức là bằng cách chuyển toán tử mul làm tham số đầu tiên cho hàm bản đồ và Lists làm tham số thứ hai và thứ ba cho hàm này. Hãy xem thời gian thực hiện của mỗi cách tiếp cận.
output
Trong ví dụ trên, có thể thấy rằng thời gian thực hiện bởi hàm bản đồ xấp xỉ một nửa thời gian thực hiện bởi vòng lặp for. Điều này cho thấy itertools là công cụ nhanh, tiết kiệm bộ nhớ. Các loại trình vòng lặp khác nhau được cung cấp bởi mô-đun này là:
1. Infinite iteratorsTrình lặp trong Python là bất kỳ kiểu Python nào có thể được sử dụng với ‘vòng lặp for trong’. Danh sách Python, bộ giá trị, từ điển và bộ đều là ví dụ về trình vòng lặp có sẵn. Nhưng không nhất thiết một đối tượng vòng lặp phải cạn kiệt, đôi khi nó có thể là vô hạn. Loại trình vòng lặp như vậy được gọi là trình vòng lặp vô hạn(Infinite iterators). Python cung cấp ba loại trình lặp vô hạn: count(start, step): Trình lặp này bắt đầu in từ số “bắt đầu” và in vô hạn. Nếu các bước được đề cập, các con số sẽ bị bỏ qua nếu bước khác là 1 theo mặc định. Xem ví dụ dưới đây để biết cách sử dụng với vòng lặp for in. Thí dụ:
output
cycle(iterable):: Trình lặp này in tất cả các giá trị theo thứ tự từ vùng chứa đã truyền. Nó khởi động lại quá trình in từ đầu một lần nữa khi tất cả các phần tử được in theo cách tuần hoàn. Ví dụ 1:
output
output
repeat (val, num): Trình lặp này in lặp đi lặp lại giá trị đã truyền vô số lần. Nếu từ khóa tùy chọn num được đề cập, thì nó lặp lại số lần num.
output
2.Combinatoric iterators(trình vòng lặp tổ hợp)Các trình tạo đệ quy được sử dụng để đơn giản hóa các cấu trúc tổ hợp như hoán vị, tổ hợp và tích Đề-các được gọi là các biến lặp tổ hợp. Trong Python có 4 trình vòng lặp tổ hợp: Product(): Công cụ này tính toán sản phẩm theo cacte của các đầu vào lặp lại. Để tính toán sản phẩm của một tệp có thể lặp lại với chính nó, chúng tôi sử dụng đối số từ khóa lặp lại tùy chọn để chỉ định số lần lặp lại. Đầu ra của hàm này là các bộ giá trị theo thứ tự được sắp xếp. Thí dụ
output
Permutations(): Permutations() như tên gọi của chính nó được sử dụng để tạo ra tất cả các hoán vị có thể có của một biến có thể lặp lại. Tất cả các yếu tố được coi là duy nhất dựa trên vị trí của chúng chứ không phải giá trị của chúng. Hàm này nhận kích thước nhóm và kích thước nhóm có thể
lặp lại, nếu giá trị của kích thước nhóm không được chỉ định hoặc bằng Không thì giá trị của kích thước nhóm sẽ trở thành độ dài của kích thước có thể lặp lại.
output
Combinations(): Trình lặp này in tất cả các kết hợp có thể có (không thay thế) của vùng chứa được truyền vào các đối số trong kích thước nhóm được chỉ định theo thứ tự được sắp xếp.
output
Combination_with_replacement(): Hàm này trả về một dãy con có độ dài n từ các phần tử của có thể lặp trong đó n là đối số mà hàm lấy để xác định độ dài của các dãy con được tạo bởi hàm. Các phần tử riêng lẻ có thể tự lặp lại trong hàm links_with_replacement.
output
3.Terminating iteratorsTrình lặp kết thúc được sử dụng để làm việc trên các chuỗi đầu vào ngắn và tạo ra đầu ra dựa trên chức năng của phương thức được sử dụng. Các loại trình lặp kết thúc khác nhau là: accumulate(iter, func): Trình lặp này nhận hai đối số, mục tiêu có thể lặp lại và hàm sẽ được theo sau ở mỗi lần lặp giá trị trong mục tiêu. Nếu không có chức năng nào được chuyển, việc bổ sung diễn ra theo mặc định. Nếu đầu vào có thể lặp lại trống, đầu ra có thể lặp lại cũng sẽ trống.
output
chain (iter1, iter2 ..): Hàm này được sử dụng để in tất cả các giá trị trong các mục tiêu có thể lặp lại lần lượt được đề cập trong các đối số của nó.
output
chain.from_iterable(): Hàm này được triển khai tương tự như chain () nhưng đối số ở đây là danh sách các danh sách hoặc bất kỳ vùng chứa có thể lặp lại nào khác.
ouput
compress(iter, selector): Trình lặp này chọn lọc các giá trị cần in từ vùng chứa đã truyền theo giá trị danh sách boolean được truyền như các đối số khác. Các đối số tương ứng với boolean true được in ra nếu không tất cả đều bị bỏ qua. Thí dụ:
output
drop while (func, seq): Trình lặp này bắt đầu in các ký tự chỉ sau func. trong đối số trả về false lần đầu tiên.
output
filterfalse (func, seq): Như tên cho thấy, trình lặp này chỉ in các giá trị trả về false cho hàm đã truyền. Thí dụ:
output
islice(iterable, start, stop, step): Trình lặp này in chọn lọc các giá trị được đề cập trong vùng chứa có thể lặp lại của nó được truyền dưới dạng đối số. Trình lặp này nhận 4 đối số, vùng chứa có thể lặp lại, vị trí bắt đầu, vị trí kết thúc và bước. Thí dụ:
ouput
starmap (func., tuple list): Trình vòng lặp này nhận một hàm và danh sách tuple làm đối số và trả về giá trị theo hàm từ mỗi bộ danh sách.
ouput
take while (func, iterable): Trình lặp này ngược lại với dropworthy (), nó in các giá trị cho đến khi hàm trả về false lần đầu tiên. Thí dụ:
ouput
tee(iterator, count): – Trình vòng lặp này chia vùng chứa thành một số trình vòng lặp được đề cập trong đối số. Thí dụ:
output
zip_longest (iterable1, iterable2, fillval): Trình lặp này in các giá trị của các vòng lặp theo thứ tự. Nếu một trong các tệp lặp được in đầy đủ, các giá trị còn lại được lấp đầy bởi các giá trị được gán cho giá trị điền. Thí dụ:
output
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây. Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng! Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you! |