我有两份清单
a
和
b
. 然后,我尝试在列表的值之间找到所有三个元素的组合,并且只找到其中包含列表中的值的元素组合
b
. 目前,我的做法如下:
import itertools as it
a = [1,2,3,4]
b = [5,6]
for i in range(len(b)):
a.append(b[i])
c = []
for j in it.combinations(a, 3):
if 5 in j or 6 in j:
c.append(list(j))
# output:
# [[1, 2, 5], [1, 2, 6], [1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [1, 5, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6], [2, 5, 6], [3, 4, 5], [3, 4, 6], [3, 5, 6], [4, 5, 6]]
不幸的是,对于大型列表,这是一种无效的方法,因为列表中存在元素的条件
b
位于具有功能的回路后面
it.combinations
,在这样的系统中,无论条件如何,都会完全执行。在大列表的情况下,会严重超载计算。
是否有可能以不同的方式获得这样的结果?