子集¶
- class sympy.combinatorics.subsets.Subset(subset, superset)[源代码][源代码]¶
表示一个基本的子集对象。
- 属性:
cardinality
返回所有可能子集的数量。
rank_binary
计算二进制有序秩。
rank_gray
计算子集的格雷码排名。
rank_lexicographic
计算子集的字典序排名。
size
获取子集的大小。
subset
获取由当前实例表示的子集。
superset
获取子集的超集。
superset_size
返回超集的大小。
方法
bitlist_from_subset
(subset, superset)获取与子集对应的位列表。
这是一个辅助函数。
用于 prev_gray 和 next_gray 的辅助函数。
生成下一个二进制顺序子集。
生成下一个格雷码顺序子集。
生成下一个字典序排列的子集。
生成前一个二进制有序子集。
生成前一个格雷码顺序子集。
生成按字典顺序排列的前一个子集。
subset_from_bitlist
(super_set, bitlist)获取由位列表定义的子集。
subset_indices
(subset, superset)返回列表中子集在超集中的索引;如果
subset
的所有元素都不在superset
中,则列表为空。unrank_binary
(rank, superset)获取指定秩的二进制有序子集。
unrank_gray
(rank, superset)获取指定秩的格雷码顺序子集。
示例
>>> 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)[源代码][源代码]¶
这是一个辅助函数。它通过
k
步迭代二进制子集。这个变量可以是正数或负数。示例
>>> 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)[源代码][源代码]¶
用于 prev_gray 和 next_gray 的辅助函数。它执行
k
步超调以获取相应的格雷码。示例
>>> 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)[源代码][源代码]¶
返回列表中子集在超集中的索引;如果
subset
的所有元素都不在superset
中,则列表为空。示例
>>> 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)[源代码]¶
找到按字典序排列的大小为
k
的子集。这使用了 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)]