在Python中,用一个字符替换列表中最多N个位置的所有可能组合的最快方法

在Python中,用一个字符替换列表中最多N个位置的所有可能组合的最快方法,python,Python,我有一个特定的用例,我需要创建包含字符串的列表的每个组合,用一个特定的字符替换多达N个元素。目前,我正在生成每一个可能的组合,然后过滤替换的元素少于N个的组合,这不是很有效 from itertools import product,repeat l = ["A","B","C"] n = 2 l_combs = list(set(product(*zip(l, repeat(''))))) l_梳现在包含 l_-wan

我有一个特定的用例,我需要创建包含字符串的列表的每个组合,用一个特定的字符替换多达N个元素。目前,我正在生成每一个可能的组合,然后过滤替换的元素少于N个的组合,这不是很有效

 from itertools import product,repeat

 l = ["A","B","C"]
 n = 2

 l_combs = list(set(product(*zip(l, repeat('')))))
l_梳现在包含


l_-wanted=[x代表l_梳中的x,如果x.count(“”)您所描述的是
itertools.compositions
的行为,从索引总数中选择最多
n个
索引来替换处的项,即列表的长度
l
。将索引组合映射到集合,以便在输出时进行有效查找:

from itertools import combinations

l = ["A", "B", "C"]
n = 2

l_wanted = [
    ['' if i in c else v for i, v in enumerate(l)]
    for k in range(n + 1) for c in map(set, combinations(range(len(l)), k))
]
l_通缉令
变成:

[['A', 'B', 'C'], ['', 'B', 'C'], ['A', '', 'C'], ['A', 'B', ''], ['', '', 'C'], ['', 'B', ''], ['A', '', '']]
[['A', 'B', 'C'], ['', 'B', 'C'], ['A', '', 'C'], ['A', 'B', ''], ['', '', 'C'], ['', 'B', ''], ['A', '', '']]