Python程序:测试列表中是否存在任何集合元素
在本文中,我们将学习如何在Python中检查列表中是否存在任何集合元素。
使用的方法
- 使用any()函数
-
使用位与&运算符
-
使用Counter()、filter()和lambda函数
示例
假设我们已经输入了一个 输入集合 和 输入列表 。我们将使用上述方法检查输入集合中是否存在任何输入集合元素。
输入
inputSet = {4, 8, 1, 3, 5, 7}
inputList = [7, 15, 20]
输出
检查输入列表中是否存在任何集合元素:True
在上面的示例中,7存在于集合和列表中,因此结果为True。
方法1:使用any()函数
any()函数返回 True 如果可迭代项中的任何项为true,否则返回False。
语法
any(iterable)
算法(步骤)
以下是执行所需任务的算法/步骤。
- 创建一个变量来存储 输入集合 并打印给定集合。
-
创建另一个变量来存储 输入列表。
-
使用 any() 函数通过遍历输入集并检查当前元素是否存在于输入列表中来检查是否存在任何集合元素。
-
打印布尔结果。
示例
以下程序使用any()函数检查是否存在任何输入集合元素在输入列表中,并返回True,否则返回False-
# 输入集合
inputSet = {4, 8, 1, 3, 5, 7}
# 打印输入集合
print("输入集合: \n", inputSet)
# 输入列表
inputList = [7, 15, 20]
# 使用any()函数检查是否存在输入列表中的任何集合元素
result = any(i in inputSet for i in inputList)
# 打印输出
print("检查输入列表中是否存在任何集合元素:", result)
输出
在执行上述程序时,将生成以下输出-
输入集合:
{1, 3, 4, 5, 7, 8}
检查输入列表中是否存在任何集合元素:True
方法2:使用位与&运算符
按位与 &运算符 ** -“&”是一种按位运算符,它比较数字(二进制)。如果两个位都是1,则将每个位设置为 **1 。
算法(步骤)
以下是执行所需任务的Algorithm/steps。
- 使用set()函数将给定输入转换为集合。
-
使用 ** & ** 运算符(将每个位设置为1,如果两个位都是1)检查输入列表中是否存在任何集合元素,并使用 bool() 函数(返回给定对象的布尔值)将结果转换为布尔型。
- 打印结果。
示例
以下程序使用位 ** & **运算符检查是否存在任何输入集合元素在输入列表中,并返回True或False-
# 输入集合
inputSet = {4, 8, 1, 3, 5, 7}
# 输出输入集合
print("输入集合:\n", inputSet)
# 输入列表
inputList = [9, 15, 20]
# 使用set()函数将给定列表转换为集合
inputListSet = set(inputList)
# 检查输入列表中是否存在任何集合元素
# 使用&运算符(检查是否存在共同元素)并转换为布尔型数值
result = bool(inputSet & inputListSet)
# 输出结果
print("检查输入列表中是否存在任何集合元素:", result)
输出
运行以上程序将输出以下结果 —
输入集合:
{1, 3, 4, 5, 7, 8}
检查输入列表中是否存在任何集合元素: False
方法3:使用Counter(),filter()和lambda函数
filter()函数 − 使用确定序列中的每个元素是真还是假的函数来过滤指定的序列。
Counter()函数 − 计算可哈希对象的子类。 调用时在可迭代对象上隐式创建哈希表。
lambda()函数
Lambda函数是一种小型匿名函数。
Lambda函数可以有无限/任意数量的参数,但只能有一个表达式。
语法
lambda参数:表达式
算法(步骤)
跟进以下算法/步骤执行所需的任务 —
- 使用import关键字从collections模块中导入Counter函数。
-
使用 Counter() 函数获取所有输入列表元素的频率作为字典。
-
使用过滤器函数将所有输入集合元素过滤出是否存在于上述频率字典中。
-
如果有任何公共元素,则过滤列表的长度将大于1。
-
使用if条件语句检查上述条件并相应输出。
示例
以下程序使用Counter(),filter()和lambda函数检查输入集合中是否存在输入列表元素,并在存在时返回True,否则返回False —
# 从collections模块中导入Counter函数
from collections import Counter
# 输入集合
inputSet = {4, 8, 1, 3, 5, 7}
# 输出输入集合
print("输入集合:\n", inputSet)
# 输入列表
inputList = [7, 15, 20, 7]
# 使用Counter()函数获取列表元素的频率
# 在此处它返回字典频率
elements_freq = Counter(inputList)
# 使用lambda函数遍历输入集合
# 检查集合元素是否存在于字典的key中
# 过滤所有满足上述条件的元素
output = list(filter(lambda k: k in elements_freq.keys(), inputSet))
# 检查是否有过滤元素
if(len(output) > 0):
output = True
# 如果没有公共元素,则输出为False
else:
output = False
# 输出结果
print("检查输入列表中是否存在任何集合元素:", output)
输出
运行以上程序将输出以下结果 —
输入集合:
{1, 3, 4, 5, 7, 8}
检查输入列表中是否存在任何集合元素: True
结论
在本文中,我们学习了如何使用三种不同的方法确定集合是否包含列表中的元素。 我们还学习了如何使用set()函数将任何可迭代对象(如列表,元组或任何可迭代对象)转换为集合,以及如何使用&运算符查找两个给定集合中的公共元素。