在 Python 中检查一个列表是否是另一个列表的子集


Python 提供了多种方法来检查一个列表是否为另一个列表的子集,例如'all()'函数,以及使用'issubset()'函数来有效地执行此检查。以下列出了三种用于在 Python 中检查一个列表是否为另一个列表的子集的主要方法。

  • all() 函数:检查可迭代对象中的所有元素是否都为真。

  • issubet() 方法:在 Python 集合中用于收集唯一元素。

  • intersection() 方法:查找两个集合之间的公共元素。

使用 'all()' 函数

在 Python 中,all()如果可迭代对象中的所有元素都为真,则返回'True',否则返回False。我们可以使用此方法结合生成器表达式来检查较小列表中的每个元素是否都存在于较大的列表中。

示例

在下面的示例代码中,'element in Alist for element in Asub_list'指的是与 'all()' 函数一起使用的生成器表达式,它根据 'all()' 函数的结果,针对 'Asub_list' 中的每个元素生成 True 或 False,我们根据 'all()' 函数的结果打印 'Asub_list' 是否为 'Alist' 的子集。

#  Define the main list and the sublist
Alist = ['Mon', 'Tue', 5, 'Sat', 9]
Asub_list = ['Tue', 5, 9]

print("Given list ",Alist)
print("Given sublist",Asub_list)

#  Check if Asub_list is a subset of Alist using all()
if all(element in Alist for element in Asub_list):
    print("Sublist is part of the bigger list")
else:
    print("Sublist is not part of the bigger list")

#  Test with another sublist
Asub_list = ['Wed', 5, 9]
if all(element in Alist for element in Asub_list):
    print("Sublist is part of the bigger list")
else:
    print("Sublist is not part of the bigger list")

输出

Given list  ['Mon', 'Tue', 5, 'Sat', 9]
Given sublist ['Tue', 5, 9]
Sublist is part of the bigger list
Sublist is not part of the bigger list

使用 'issubet()' 方法

'issubet()'方法是 Python 集合数据结构提供的内置函数,它检查一个集合的所有元素是否都存在于另一个集合中。我们必须将列表转换为集合才能实现此方法,并更有效地检查子集。

示例

在下面的代码中,使用 'set()' 构造函数将 'Asub_list''Alist' 都转换为集合。方法 set(Asub_list).issubset(set(Alist))检查集合 'Asub_list' 中的每个元素是否存在于 'Alist' 集合中。如果所有元素都存在,则返回 'True',否则打印 'False'

Alist = [1, 2, 3, 4, 4]
Asub_list = [4, 4]

# Using issubset()
print(set(Asub_list).issubset(set(Alist)))

输出

True

使用 'intersection()' 方法

'intersection()' 方法返回一个包含两个集合中共有元素的集合。通过比较交集结果并确定子列表是否为主列表的子集,将子列表转换为集合。

示例

在下面的示例代码中,使用 'set(Alist)' 将 'Alist' 转换为集合,并且 'set(Alist).intersection(Asub_list)' 将返回 'Alist''Asub_list' 中共有元素的集合。

# Define the main list and the sublist
Alist = ['Mon', 'Tue', 5, 'Sat', 9]
Asub_list = ['Tue', 5, 9]


# Convert lists to sets and use intersection()
if set(Alist).intersection(Asub_list) == set(Asub_list):
    print("Sublist is part of the bigger list")
else:
    print("Sublist is not part of the bigger list")

# Test with another sublist
Asub_list = ['Wed', 5, 9]
if set(Alist).intersection(Asub_list) == set(Asub_list):
    print("Sublist is part of the bigger list")
else:
    print("Sublist is not part of the bigger list")

输出

Sublist is part of the bigger list
Sublist is not part of the bigger list

更新于: 2024年10月14日

4K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告