Hướng dẫn dùng permentations python
Trong toán học, ý nghĩ về hoán vị liên quan đến hành động sắp xếp tất cả các thành viên của một tập hợp thành một dãy hoặc một số thứ tự, hoặc nếu tập hợp đã được sắp xếp, sắp xếp lại các phần tử của nó, quá trình này được gọi là hoán vị. Nó khác với sự kết hợp, chọn một số thành viên đã đặt mà thứ tự không được bỏ qua. Show Python cung cấp một gói để tìm các hoán vị và kết hợp của chuỗi. Các phương pháp này có trong một itertools bưu kiện. Hoán vị là sự sắp xếp các đối tượng theo một trật tự cụ thể. Trước khi bắt đầu viết mã, hãy hiểu đầy đủ về hoán vị và các tổ hợp. Hoán vị là việc lựa chọn các đối tượng mà thứ tự của các đối tượng quan trọng. Ví dụ: Hoán vị của các chữ cái trong tập {a, b, c} là như sau. abc acb Điều đó có nghĩa là chúng ta có ba biến. Vì vậy, 3 giai thừa và nó có nghĩa là 3! = 3 * 2 * 1 = 6 hoán vị. Thứ tự sắp xếp của đối tượng là rất quan trọng. Số hoán vị trên tập hợp n phần tử được cho bởi n! nghĩa là (n giai thừa). Nếu bạn có 2! tổng số hoán vị là (1 * 2) = 2.
Tính toán hoán vị Trong Pythonsử dụng itertools.permutation () phương pháp. Các itertools.permutations () phương thức nhận một danh sách, từ điển, tuple hoặc các trình vòng lặp khác làm tham số và trả về các hoán vị của danh sách đó. Để sử dụng phương thức hoán vị (), chúng ta cần nhập itertools bưu kiện. Bây giờ, hãy viết đoạn mã sau bên trong app.py tập tin và xem các hoán vị có thể có. # app.py import itertools listA = [21, 18, 19] perm = itertools.permutations(listA) for i in list(perm): print(i) Đầu tiên, chúng tôi đã nhập itertools gói và sau đó xác định một danh sách chứa ba mục. Điều đó có nghĩa là chúng ta sẽ nhận được tổng cộng sáu hoán vị. Sau đó, chúng tôi đã sử dụng itertools ‘ hoán vị hàm để lấy tất cả các hoán vị và hiển thị chúng từng cái một bằng cách sử dụng vòng lặp for. Xem kết quả bên dưới. Cách tính toán Hoán vị của tuple trong PythonĐể tính toán hoán vị của bộ tuple, chúng ta có thể sử dụng hàm itertools.permutations (). Đầu tiên, chúng ta phải nhập mô-đun itertools và sử dụng phương thức hoán vị (). Chúng ta phải chuyển tuple như một tham số để tính toán các hoán vị. Hãy xác định một tuple và sau đó tính toán các hoán vị của tuple đó. Xem đoạn mã dưới đây. # app.py from itertools import permutations tupleA = (21, 19) perm = permutations(tupleA) for item in list(perm): print(item) Chúng tôi đã nhập khẩu trực tiếp hoán vị đối tượng từ mô-đun itertools trong đoạn mã trên. Sau đó, chúng tôi đã xác định một Tuple và sau đó tính toán tuple và trả về kết quả, và chúng tôi đã lặp lại kết quả đó để in ra các hoán vị khác nhau. Xem kết quả bên dưới. Cách tìm Hoán vị của Từ điển trong PythonĐể tính toán các hoán vị của Từ điển, chúng ta có thể sử dụng itertools.permutations () phương pháp. Chúng ta phải truyền Dictionary.values () cho các tham số của phương thức hoán vị, và đó là nó. Chúng tôi sẽ nhận được kết quả. Hãy tính toán Hoán vị của Từ điển. Tuy nhiên, trước tiên, hãy viết đoạn mã sau bên trong app.py tập tin. # app.py from itertools import permutations dictA = { 1: 19, 2: 21, 3: 18 } perm = permutations(dictA.values()) for item in list(perm): print(item) Trong đoạn mã trên, chúng ta đã tính toán các hoán vị của các giá trị Từ điển. Xem kết quả bên dưới. Sự kết luậnGói itertools trong Python rất hữu ích khi chúng ta phải tính toán các hoán vị và kết hợp. Chúng tôi đã tính toán các hoán vị cho Danh sách, Tuple và Từ điển. Đó là nó cho hướng dẫn này. Bài viết được đề xuấtPython có nghĩa là Trung bình của Python Chế độ 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! |