-
千万里不及你
以下仅使用两个嵌套的 for 循环from itertools import product as proddef consecutive_combos(a): " Generates consecutive ombinations of items in list " return [a[i:j] for i in range(len(a)) for j in range(i+1, len(a)+1)]num = [1, 2, 3]alpha = ['a', 'b', 'c']# Generates product of sequencesresult = [x + y for x, y in prod(consecutive_combos(num), consecutive_combos(alpha))]print(result)输出[[1, 'a'], [1, 'a', 'b'], [1, 'a', 'b', 'c'], [1, 'b'], [1, 'b', 'c'], [1, 'c'], [1, 2, 'a'], [1, 2, 'a', 'b'], [1, 2, 'a', 'b', 'c'], [1, 2, 'b'], [1, 2, 'b', 'c'], [1, 2, 'c'], [1, 2, 3, 'a'], [1, 2, 3, 'a', 'b'], [1, 2, 3, 'a', 'b', 'c'], [1, 2, 3, 'b'], [1, 2, 3, 'b', 'c'], [1, 2, 3, 'c'], [2, 'a'], [2, 'a', 'b'], [2, 'a', 'b', 'c'], [2, 'b'], [2, 'b', 'c'], [2, 'c'], [2, 3, 'a'], [2, 3, 'a', 'b'], [2, 3, 'a', 'b', 'c'], [2, 3, 'b'], [2, 3, 'b', 'c'], [2, 3, 'c'], [3, 'a'], [3, 'a', 'b'], [3, 'a', 'b', 'c'], [3, 'b'], [3, 'b', 'c'], [3, 'c']]
-
翻阅古今
您可以使用模块itertoolsanscombinationsimport itertools as itl1 = []# get all combinations of numfor i in range(1, len(num)+1): l1.extend([* it.combinations(num, i)])# get all combinations of alphafor j in range(1, len(alpha)+1): l2.extend([* it.combinations(alpha, j)])# list comprehension to combine elements from the two listscomb = [e1+e2 for e1 in l1 for e2 in l2] 通过这样做,您将获得一个元组列表。更新:为了考虑约束:输出期望所有可能的连续组合例如 [a] [a,b] 是需要的,而 [a,c] 不是。num = [1, 2, 3]alpha = ['a', 'b', 'c']l1 = [num[i:j+1] for i in range(len(num)) for j in range(i, len(num))]l2 = [alpha[i:j+1] for i in range(len(alpha)) for j in range(i, len(alpha))]result = [e1+e2 for e1 in l1 for e2 in l2]print(*result, sep="\n")[1, 'a'][1, 'a', 'b'][1, 'a', 'b', 'c'][1, 'b'][1, 'b', 'c'][1, 'c'][1, 2, 'a'][1, 2, 'a', 'b'][1, 2, 'a', 'b', 'c'][1, 2, 'b'][1, 2, 'b', 'c'][1, 2, 'c'][1, 2, 3, 'a'][1, 2, 3, 'a', 'b'][1, 2, 3, 'a', 'b', 'c'][1, 2, 3, 'b'][1, 2, 3, 'b', 'c'][1, 2, 3, 'c'][2, 'a'][2, 'a', 'b'][2, 'a', 'b', 'c'][2, 'b'][2, 'b', 'c'][2, 'c'][2, 3, 'a'][2, 3, 'a', 'b'][2, 3, 'a', 'b', 'c'][2, 3, 'b'][2, 3, 'b', 'c'][2, 3, 'c'][3, 'a'][3, 'a', 'b'][3, 'a', 'b', 'c'][3, 'b'][3, 'b', 'c'][3, 'c']
-
largeQ
我希望它会有所帮助from itertools import combinations num = [1, 2, 3]alpha = ["a", "b", "c"]big_list=num+alphacomb += list(combinations(big_list,2) )comb += list(combinations(big_list,3) )for i in list(comb): print (i)输出:(1, 2) (1, 3) (1, 'a') (1, 'b') (1, 'c') (2, 3) (2, 'a') (2, 'b') (2, 'c') (3, 'a') (3, 'b') (3, 'c') ('a', 'b') ('a', 'c') ('b' , 'c') (1, 2, 3) (1, 2, 'a') (1, 2, 'b') (1, 2, 'c') (1, 3, 'a') (1 , 3, 'b') (1, 3, 'c') (1, 'a', 'b') (1, 'a', 'c') (1, 'b', 'c') ( 2, 3, 'a') (2, 3, 'b') (2, 3, 'c') (2, 'a', 'b') (2, 'a', 'c') (2 , 'b', 'c') (3, 'a', 'b') (3, 'a', 'c') (3, 'b', 'c') ('a', 'b' , 'c') [0.50秒内完成]