2024-06-25 23:25:38 发布
网友
给定一个可数'ABCD',我想得到所有(1,3)对,例如:
'ABCD'
(1,3)
('A', 'BCD'), ('B', 'ACD'), ('C', 'ABD'), ('D', 'ABC')
我发现了itertools.combination,但是,它只能给出['BCD', 'ACD', 'ABD', 'ABC'],不包括1部分。你知道吗
itertools.combination
['BCD', 'ACD', 'ABD', 'ABC']
1
在python中有没有一种简单的方法可以做到这一点?你知道吗
最简单的方法是使用集合差异来识别被生成的组合排除的零件:
>>> from itertools import combinations >>> population = set('ABCD') >>> for group in combinations(population, 3): remainder = population.difference(group) result = ''.join(remainder), ''.join(group) print(result) ('D', 'ACB') ('B', 'ACD') ('C', 'ABD') ('A', 'CBD')
这种技术适用于分区,而不仅仅是(1, 3)。例如,以下是(2, 3)分区:
(1, 3)
(2, 3)
>>> population = set('ABCDE') >>> for group in combinations(population, 3): remainder = population.difference(group) result = ''.join(remainder), ''.join(group) print(result) ('ED', 'ACB') ('BD', 'ACE') ('BE', 'ACD') ('CD', 'ABE') ('CE', 'ABD') ('CB', 'AED') ('AD', 'CBE') ('AE', 'CBD') ('AB', 'CED') ('AC', 'BED')
怎么样:
x = 'ABCD' [(x[i], x[:i] + x[i+1:]) for i in range(len(x))] # Outputs: # [('A', 'BCD'), ('B', 'ACD'), ('C', 'ABD'), ('D', 'ABC')]
最简单的方法是使用集合差异来识别被生成的组合排除的零件:
这种技术适用于分区,而不仅仅是
(1, 3)
。例如,以下是(2, 3)
分区:怎么样:
相关问题 更多 >
编程相关推荐