gpt4 book ai didi

python - 查找四组交叉点的所有段成员(ala Venn 图)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:53 24 4
gpt4 key购买 nike

我有四组数据:

A=range(10,20) 
B=range(5,17)
C=range(15,25)
D=range(18,30)
sets = [A, B, C, D]

我想做的是获取交集的内容被视为在此处获取维恩图的所有部分(这是完整的案例):

enter image description here

在上面的例子中,分区填充如下:

()  ----> 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

有什么方法可以做到?请注意,我对绘制图表不感兴趣。我关心的是获得每个分割市场的成员。

最佳答案

我在博客上写了关于此类问题的解决方案:http://paddy3118.blogspot.de/2013/07/set-divisionspartitions.html

您可能需要将 x..y 语法扩展为整数集,但如果这种形式的输出对您有用,那么您可能希望将输出与此类函数连接起来:http://rosettacode.org/wiki/Range_extraction

附言这是一个漂亮的维恩图。

关于python - 查找四组交叉点的所有段成员(ala Venn 图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32204513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com