【发布时间】:2015-08-25 12:52:03
【问题描述】:
我有四组数据:
A=range(10,20)
B=range(5,17)
C=range(15,25)
D=range(18,30)
sets = [A, B, C, D]
我想要做的是获取可以 被视为在这里获取了维恩图的所有部分(这是完整的案例):
对于上面的示例,分区填充如下:
() ----> set()
('A',) ----> set()
('B',) ----> {8, 9, 5, 6, 7}
('C',) ----> set()
('D',) ----> {25, 26, 27, 28, 29}
('A', 'B') ----> {10, 11, 12, 13, 14}
('A', 'C') ----> {17}
('A', 'D') ----> set()
('B', 'C') ----> set()
('B', 'D') ----> set()
('C', 'D') ----> {24, 20, 21, 22, 23}
('A', 'B', 'C') ----> {16, 15}
('A', 'B', 'D') ----> set()
('A', 'C', 'D') ----> {18, 19}
('B', 'C', 'D') ----> set()
('A', 'B', 'C', 'D') ----> set()
这些是预期的答案。
我被下面的代码卡住了,它只能找到必须的交集 存在于所有给定的集合中:
# only gives ACD members
test = [tuple([A[0],A[-1]]), tuple([C[0],C[-1]]), tuple([D[0],D[-1]])]
starts, ends = zip(*test)
result = range(max(starts), min(ends) + 1)
# Gives 18,19
有什么办法呢? 请注意,我对绘制图表不感兴趣。 我关心的是获得每个细分市场的成员。
【问题讨论】:
-
你期望什么输出?
-
交集为零
-
@Pynchia:我知道。请仔细阅读OP。我的例子只能填写一些部分。
-
好的,问题已经仔细阅读了,但我还是无法理解。请回答@andi 的评论并编辑您的帖子,以便其他人理解和使用该问题。
-
您的示例代码也没有定义
ranges