Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中按集合成员资格分组整数_Python_List_Integer_Set_Grouping - Fatal编程技术网

Python中按集合成员资格分组整数

Python中按集合成员资格分组整数,python,list,integer,set,grouping,Python,List,Integer,Set,Grouping,在Python中,给定一个范围(s,N)中N组整数的列表,我如何构建一个列表,根据这些整数的集合成员身份对它们进行分组?这里有一个例子可以帮助我解释: 输入示例(N=2组): 期望输出: out = [set([10,11]), set([4,5,6]), set([7,8,9]), set([0,1,2,3,12])] 因此,在输出中,范围(s,n)中的每个整数只出现一次,并且有2^n个集合。在本例中,out[0]包含两个集合中都不存在的整数。out[1]包含第二个集合中的整数,而不是第一个

在Python中,给定一个范围(s,N)中N组整数的列表,我如何构建一个列表,根据这些整数的集合成员身份对它们进行分组?这里有一个例子可以帮助我解释:

输入示例(N=2组):

期望输出:

out = [set([10,11]), set([4,5,6]), set([7,8,9]), set([0,1,2,3,12])]
因此,在输出中,范围(s,n)中的每个整数只出现一次,并且有2^n个集合。在本例中,out[0]包含两个集合中都不存在的整数。out[1]包含第二个集合中的整数,而不是第一个集合中的整数。out[2]包含第一个集合中的整数,但不包含第二个集合中的整数。最后,out[3]包含两个集合共有的整数


对于2套,这是相当容易的。。。但我被N套难倒了。有人有线索吗?

我甚至不敢去想它的效率,但它非常紧凑:

 out = [set(range(x, y))]
 for in_set in input:
    out_diff = [out_set - in_set for out_set in out]
    out_union = [out_set & in_set for out_set in out]
    out = out_diff + out_union

它起作用了!(这比我想象的要优雅得多)。我花了更长的时间去弄清楚它是如何工作的,而不是你花了更长的时间去发布它!我的数据集相当小,所以效率应该不成问题。谢谢:)@Spacecookies我花了更长的时间才弄明白你在问什么,而不是想出一个算法P Python使集合操作变得太容易了。
 out = [set(range(x, y))]
 for in_set in input:
    out_diff = [out_set - in_set for out_set in out]
    out_union = [out_set & in_set for out_set in out]
    out = out_diff + out_union