子集#
- class sympy.combinatorics.subsets.Subset(subset, superset)[源代码]#
表示基本子集对象。
解释
我们主要使用两种技术来生成子集:二进制枚举和字典式枚举。Subset类接受两个参数,第一个参数描述要考虑的初始子集,第二个参数描述超集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.next_binary().subset ['b'] >>> a.prev_binary().subset ['c']
- classmethod bitlist_from_subset(subset, superset)[源代码]#
获取与子集对应的位列表。
实例
>>> from sympy.combinatorics import Subset >>> Subset.bitlist_from_subset(['c', 'd'], ['a', 'b', 'c', 'd']) '0011'
- property cardinality#
返回所有可能的子集的数目。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.cardinality 16
参见
- iterate_binary(k)[源代码]#
This is a helper function. It iterates over the binary subsets by
k
steps. This variable can be both positive or negative.实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.iterate_binary(-2).subset ['d'] >>> a = Subset(['a', 'b', 'c'], ['a', 'b', 'c', 'd']) >>> a.iterate_binary(2).subset []
- iterate_graycode(k)[源代码]#
Helper function used for prev_gray and next_gray. It performs
k
step overs to get the respective Gray codes.实例
>>> from sympy.combinatorics import Subset >>> a = Subset([1, 2, 3], [1, 2, 3, 4]) >>> a.iterate_graycode(3).subset [1, 4] >>> a.iterate_graycode(-2).subset [1, 2, 4]
- next_binary()[源代码]#
生成下一个二进制有序子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.next_binary().subset ['b'] >>> a = Subset(['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']) >>> a.next_binary().subset []
- next_gray()[源代码]#
生成下一个格雷码有序子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset([1, 2, 3], [1, 2, 3, 4]) >>> a.next_gray().subset [1, 3]
- next_lexicographic()[源代码]#
生成下一个按字典顺序排列的子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.next_lexicographic().subset ['d'] >>> a = Subset(['d'], ['a', 'b', 'c', 'd']) >>> a.next_lexicographic().subset []
- prev_binary()[源代码]#
生成上一个二进制有序子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset([], ['a', 'b', 'c', 'd']) >>> a.prev_binary().subset ['a', 'b', 'c', 'd'] >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.prev_binary().subset ['c']
- prev_gray()[源代码]#
生成上一个格雷码有序子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset([2, 3, 4], [1, 2, 3, 4, 5]) >>> a.prev_gray().subset [2, 3, 4, 5]
- prev_lexicographic()[源代码]#
生成上一个按字典顺序排列的子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset([], ['a', 'b', 'c', 'd']) >>> a.prev_lexicographic().subset ['d'] >>> a = Subset(['c','d'], ['a', 'b', 'c', 'd']) >>> a.prev_lexicographic().subset ['c']
- property rank_binary#
计算二进制有序秩。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset([], ['a','b','c','d']) >>> a.rank_binary 0 >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.rank_binary 3
- property rank_gray#
计算该子集的格雷码排序。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c','d'], ['a','b','c','d']) >>> a.rank_gray 2 >>> a = Subset([2, 4, 5], [1, 2, 3, 4, 5, 6]) >>> a.rank_gray 27
- property rank_lexicographic#
计算子集的字典排序。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.rank_lexicographic 14 >>> a = Subset([2, 4, 5], [1, 2, 3, 4, 5, 6]) >>> a.rank_lexicographic 43
- property size#
获取子集的大小。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.size 2
- property subset#
获取当前实例表示的子集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.subset ['c', 'd']
参见
- classmethod subset_from_bitlist(super_set, bitlist)[源代码]#
获取由位列表定义的子集。
实例
>>> from sympy.combinatorics import Subset >>> Subset.subset_from_bitlist(['a', 'b', 'c', 'd'], '0011').subset ['c', 'd']
- classmethod subset_indices(subset, superset)[源代码]#
Return indices of subset in superset in a list; the list is empty if all elements of
subset
are not insuperset
.实例
>>> from sympy.combinatorics import Subset >>> superset = [1, 3, 2, 5, 4] >>> Subset.subset_indices([3, 2, 1], superset) [1, 2, 0] >>> Subset.subset_indices([1, 6], superset) [] >>> Subset.subset_indices([], superset) []
- property superset#
获取子集的超集。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.superset ['a', 'b', 'c', 'd']
参见
- property superset_size#
返回超集的大小。
实例
>>> from sympy.combinatorics import Subset >>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd']) >>> a.superset_size 4
参见
- subsets.ksubsets(k)[源代码]#
Finds the subsets of size
k
in lexicographic order.它使用itertools生成器。
实例
>>> from sympy.combinatorics.subsets import ksubsets >>> list(ksubsets([1, 2, 3], 2)) [(1, 2), (1, 3), (2, 3)] >>> list(ksubsets([1, 2, 3, 4, 5], 2)) [(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]
参见