Python 中如何查找幂集
在数学中,任何集合的幂集是一个包含给定集合的所有可能子集以及一个空集的集合。换句话说,集合的所有子集也称为幂集。在 Python 中可以有一个强大的列表、集合、字符串等集合。
在本教程中,我们将在 Python 中找到给定集合的幂集。
在 Python 中使用迭代方法获取 Powerset
虽然我们可以同时使用递归方法和迭代方法来找到幂集,但迭代方法比递归方法更受欢迎,因为它的过程更快。
我们使用嵌套的 for
循环来创建这样的幂集。
例如,
def powerset(fullset):
listsub = list(fullset)
subsets = []
for i in range(2**len(listsub)):
subset = []
for k in range(len(listsub)):
if i & 1<<k:
subset.append(listsub[k])
subsets.append(subset)
return subsets
subsets = powerset(set([1,2,3,4]))
print(subsets)
print(len(subsets))
输出结果如下:
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3], [4], [1, 4], [2, 4], [1, 2, 4], [3, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]]
16
在 Python 中使用 itertools.combinations 函数查找幂集
itertools 是 Python 中的一个模块,用于迭代数据结构。这些数据结构也称为可迭代对象。可以使用 for
循环跳过它们。
这个模块的 combinations 函数可以创建一个集合的组合来创建一个 powerset。
请参考下面的代码。
from itertools import combinations
def powerset(string):
n = len(string)
for i in range(0,n+1):
for element in combinations(string,i):
print(''.join(element))
string=['x','y','z']
powerset(string)
输出结果如下:
x
y
z
xy
xz
yz
xyz
在 Python 中使用列表推导式查找幂集
列表推导式是一种基于现有列表创建新列表的方法。它提供了更短的语法,比用于创建列表的其他函数和循环更紧凑、更快。
我们也在这个方法中使用了一个嵌套的 for 循环。
例如,
def get_subsets(fullset):
listrep = list(fullset)
n = len(listrep)
return [[listrep[k] for k in range(n) if i&1<<k] for i in range(2**n)]
string=['x','y','z']
print(get_subsets(string))
输出结果如下:
[[], ['x'], ['y'], ['x', 'y'], ['z'], ['x', 'z'], ['y', 'z'], ['x', 'y', 'z']]
在 Python 中使用递归方法查找幂集
递归方法是一种方法,其中函数不断使用不同的参数调用自身。我们可以创建一个递归函数来查找集合的幂集。
例如,
def powerSet(string , index , c):
if index == len(string):
print(c)
return
powerSet(string, index + 1,
c + string[index])
powerSet(string, index + 1, c)
s1 = ["a","b","c"]
index = 0
c = ""
powerSet(s1, index , c)
输出结果如下:
abc
ab
ac
a
bc
b
c
注: 本文转载自:https://www.delftstack.com/zh/howto/python/powerset-python/ 。文中示例的正确性已实际运行验证过,并配有截图。如遇到错误代码会进行相应的修改,修改正确之后才会在文中发布。如您发现有漏掉修改的,请及时告知。
相关文章
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串
在 Python Pandas 中使用 str.split 将字符串拆分为两个列表列
发布时间:2024/04/24 浏览次数:1124 分类:Python
-
本教程介绍如何使用 pandas str.split() 函数将字符串拆分为两个列表列。
在 Pandas 中将 Timedelta 转换为 Int
发布时间:2024/04/23 浏览次数:231 分类:Python
-
可以使用 Pandas 中的 dt 属性将 timedelta 转换为整数。
Python 中的 Pandas 插入方法
发布时间:2024/04/23 浏览次数:112 分类:Python
-
本教程介绍了如何在 Pandas DataFrame 中使用 insert 方法在 DataFrame 中插入一列。
使用 Python 将 Pandas DataFrame 保存为 HTML
发布时间:2024/04/21 浏览次数:106 分类:Python
-
本教程演示如何将 Pandas DataFrame 转换为 Python 中的 HTML 表格。
如何将 Python 字典转换为 Pandas DataFrame
发布时间:2024/04/20 浏览次数:73 分类:Python
-
本教程演示如何将 python 字典转换为 Pandas DataFrame,例如使用 Pandas DataFrame 构造函数或 from_dict 方法。
如何在 Pandas 中将 DataFrame 列转换为日期时间
发布时间:2024/04/20 浏览次数:101 分类:Python
-
本文介绍如何将 Pandas DataFrame 列转换为 Python 日期时间。