itertools.permutations tạo ra trong đó các phần tử của nó được coi là duy nhất dựa trên vị trí của chúng, không dựa trên giá trị của chúng. Vì vậy, về cơ bản tôi muốn tránh các bản sao như thế này:
>>> list(itertools.permutations([1, 1, 1]))
[(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)]
Việc lọc sau đó là không thể vì số lượng hoán vị quá lớn trong trường hợp của tôi.
Có ai biết về một thuật toán phù hợp cho việc này không?
Cảm ơn rât nhiều!
BIÊN TẬP:
Về cơ bản những gì tôi muốn là:
x = itertools.product((0, 1, 'x'), repeat=X)
x = sorted(x, key=functools.partial(count_elements, elem='x'))
điều này không thể thực hiện được vì sorted
tạo một danh sách và đầu ra của itertools.product quá lớn.
Xin lỗi, tôi nên mô tả vấn đề thực tế.