Trình tạo python có tiếp theo

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ể tự mình viết mã để 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

__ next __ trong Python là gì?

Phương thức __next__ của Python trả về một phần tử tùy ý đại diện cho phần tử “tiếp theo” khi bạn lặp lại đối tượng mà nó được gọi . Ví dụ: nếu bạn lặp lại my_object bằng cách sử dụng for x trong my_object , Python sẽ gọi nội bộ my_object. __next__[] trong mỗi lần lặp vòng lặp để xác định phần tử tiếp theo.

Tiếp theo và ITER trong Python là gì?

Đối tượng iterator được khởi tạo bằng phương thức iter[]. Nó sử dụng phương thức next[] để lặp lại . __iter__[]. Phương thức iter[] được gọi để khởi tạo một iterator. Điều này trả về một đối tượng iterator. __tiếp theo__[]. Phương thức tiếp theo trả về giá trị tiếp theo cho lần lặp.

Làm cách nào để chuyển đổi trình tạo thành trình lặp Python?

Nếu bạn trả về self , thì self phải là một iterator [có nghĩa là nó phải có __next__ ]. Nhưng bạn có thể trả về bất kỳ loại trình vòng lặp nào và việc sử dụng suất trong hàm thực hiện chính xác điều đó - nó làm cho hàm trả về một trình vòng lặp. [Về mặt kỹ thuật là một trình tạo, nhưng trình tạo cũng là trình vòng lặp. ]

Trình tạo so với trình vòng lặp trong Python là gì?

Iterator là đối tượng sử dụng phương thức next[] để lấy giá trị tiếp theo của dãy. Trình tạo là một hàm tạo hoặc tạo ra một chuỗi giá trị bằng cách sử dụng câu lệnh năng suất . Các lớp được sử dụng để thực hiện các trình vòng lặp. Các chức năng được sử dụng để thực hiện trình tạo.

Chủ Đề