我知道我可以轻松获得所有组合,但是有没有办法只获得包含列表中某些元素的组合?我举个例子。
我说我有
arr = ['a','b','c','d']
例如,如果n = 3,我想获取长度为(n)且包含'a'的所有组合
[a, b, c]
[a, b, d]
[a, c, d]
我想知道是否有一种更好的方法来生成它而不生成所有组合。任何帮助将不胜感激。
答案 0 :(得分:3)
我将继续进行以下操作:
答案 1 :(得分:0)
您可以结合使用itertools
和list comprehension
。喜欢:
导入itertools
import itertools
arr = ['a', 'b', 'c', 'd']
temp = itertools.combinations(arr, 3)
result = [list(i) for i in list(temp) if 'a' in i]
print(result)
输出:
[['a', 'b', 'c'], ['a', 'b', 'd'], ['a', 'c', 'd']]