📜  Python - 来自给定字符的 K 长度组合(1)

📅  最后修改于: 2023-12-03 15:04:03.414000             🧑  作者: Mango

Python - 来自给定字符的 K 长度组合

在计算机科学中,组合是一种用于选择对象的技术。组合问题涉及从给定的集合中选择一些元素的问题,但是顺序不重要。

在 Python 中,我们可以使用 itertools 模块来生成组合。

生成组合

我们可以使用 combinations() 函数从序列生成组合。它接受两个参数 - 可迭代对象和组合长度。

import itertools

def get_combinations(iterable, r):
    return list(itertools.combinations(iterable, r))

print(get_combinations("abc", 2))  # [('a', 'b'), ('a', 'c'), ('b', 'c')]

在上面的示例中,我们从字符串 "abc" 中生成长度为 2 的组合。

生成重复组合

我们可以使用 combinations_with_replacement() 函数从序列生成重复组合。它接受两个参数 - 可迭代对象和组合长度。

import itertools

def get_combinations_with_replacement(iterable, r):
    return list(itertools.combinations_with_replacement(iterable, r))

print(get_combinations_with_replacement("abc", 2))  # [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')]

在上面的示例中,我们从字符串 "abc" 中生成长度为 2 的重复组合。

总结

组合问题在计算机科学和数学中都是很常见的。使用 itertools 模块可以轻松地在 Python 中生成组合和重复组合。