Trình lặp sao chép sâu Python

Mô-đun itertools cung cấp ba chức năng cho tác vụ này. Cái đầu tiên trong số này—itertools.permutations[]—lấy một tập hợp các mục và tạo ra một chuỗi các bộ sắp xếp lại tất cả các mục thành tất cả các hoán vị có thể [i. e. , nó xáo trộn chúng thành tất cả các cấu hình có thể]. Ví dụ

>>> items = ['a', 'b', 'c']
>>> from itertools import permutations
>>> for p in permutations[items]:
..     print[p]
...
['a', 'b', 'c']
['a', 'c', 'b']
['b', 'a', 'c']
['b', 'c', 'a']
['c', 'a', 'b']
['c', 'b', 'a']
>>>

Nếu bạn muốn tất cả các hoán vị có độ dài nhỏ hơn, bạn có thể đưa ra đối số độ dài tùy chọn. Ví dụ

>>> for p in permutations[items, 2]:
..     print[p]
...
['a', 'b']
['a', 'c']
['b', 'a']
['b', 'c']
['c', 'a']
['c', 'b']
>>>

Sử dụng itertools.combinations[] để tạo chuỗi kết hợp các mục được lấy từ đầu vào. Ví dụ

>>> from itertools import combinations
>>> for c in combinations[items, 3]:
..     print[c]
...
['a', 'b', 'c']
>>> for c in combinations[items, 2]:
..     print[c]
...
['a', 'b']
['a', 'c']
['b', 'c']
>>> for c in combinations[items, 1]:
..     print[c]
...
['a',]
['b',]
['c',]
>>>

Đối với combinations[], thứ tự thực tế của các phần tử không được xem xét. Nghĩa là, tổ hợp

>>> for p in permutations[items, 2]:
..     print[p]
...
['a', 'b']
['a', 'c']
['b', 'a']
['b', 'c']
['c', 'a']
['c', 'b']
>>>
0 được coi là giống với
>>> for p in permutations[items, 2]:
..     print[p]
...
['a', 'b']
['a', 'c']
['b', 'a']
['b', 'c']
['c', 'a']
['c', 'b']
>>>
1 [không được sản xuất]

Khi tạo kết hợp, các mục đã chọn sẽ bị xóa khỏi bộ sưu tập các ứng cử viên có thể [i. e. , nếu

>>> for p in permutations[items, 2]:
..     print[p]
...
['a', 'b']
['a', 'c']
['b', 'a']
['b', 'c']
['c', 'a']
['c', 'b']
>>>
0 đã được chọn, thì nó sẽ bị loại khỏi xem xét]. Hàm
>>> for p in permutations[items, 2]:
..     print[p]
...
['a', 'b']
['a', 'c']
['b', 'a']
['b', 'c']
['c', 'a']
['c', 'b']
>>>
1 nới lỏng điều này và cho phép chọn cùng một mục nhiều lần. Ví dụ

>>> for c in combinations_with_replacement[items, 3]:
..     print[c]
...
['a', 'a', 'a']
['a', 'a', 'b']
['a', 'a', 'c']
['a', 'b', 'b']
['a', 'b', 'c']
['a', 'c', 'c']
['b', 'b', 'b']
['b', 'b', 'c']
['b', 'c', 'c']
['c', 'c', 'c']
>>>

Công thức này chỉ thể hiện một số sức mạnh được tìm thấy trong mô-đun itertools. Mặc dù bạn chắc chắn có thể viết mã để tự tạo ra các hoán vị và tổ hợp, nhưng làm như vậy có lẽ sẽ đòi hỏi nhiều hơn một chút suy nghĩ. Khi đối mặt với các vấn đề lặp lại có vẻ phức tạp, bạn nên xem xét itertools trước tiên. Nếu vấn đề phổ biến, rất có thể đã có sẵn giải pháp

Trình lặp có thể được sao chép không?

tiêu chuẩn. bản đồ. trình vòng lặp đáp ứng các yêu cầu đối với khái niệm Trình lặp hai chiều. Điều đó có nghĩa là, trong số những thứ khác, việc tăng bản sao của trình vòng lặp sẽ không làm mất hiệu lực bản gốc . Điều đó có nghĩa là làm prev = it; .

Islice trong Python là gì?

hàm islice[] . cú pháp. islice[có thể lặp lại, bắt đầu, dừng, bước]This iterator selectively prints the values mentioned in its iterable container passed as an argument. Syntax: islice[iterable, start, stop, step]

Itertools có phải là thư viện Python chuẩn không?

Itertools là một mô-đun Python nằm trong một phần của thư viện chuẩn Python 3 .

Chuỗi trong Python là gì?

Đây là hàm nhận một loạt các lần lặp và trả về một lần lặp . Nó nhóm tất cả các lần lặp lại với nhau và tạo ra một lần lặp duy nhất làm đầu ra.

Chủ Đề