Python程序:查找在范围内但不在集合中的数字


在Python中,我们可以使用not运算符或减法运算,以及计数器函数来查找在范围内但不在集合中的数字。

Python的集合是无序元素的组合。集合的元素必须是唯一的、不可变的,并且集合会自动消除重复项。集合是可变的,创建后可以修改。

示例

假设我们已经获得了一个输入集合和范围

输入

inputSet = {3, 10, 2, 11, 15, 4, 1}
lowIndex, highIndex = 0, 8

输出

[0, 5, 6, 7]

这里0, 5, 6, 7是在给定范围内但不在集合中的元素。

使用for循环和not运算符

range()函数返回一个数字序列,从0开始,默认递增1,直到给定数字之前停止。

not运算符(一个逻辑运算符,如果语句为假则返回True,否则返回False)

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 创建一个变量来存储输入集合

  • 打印输入集合。

  • 创建两个独立的变量来存储输入的下限上限索引。

  • 创建一个空列表来存储不在输入集合中的结果数字。

  • 使用for循环遍历使用range()函数生成的输入下限和上限索引之间的范围。

  • 使用if条件语句检查当前索引是否不在输入集合中,使用not运算符

  • 使用append()函数(将元素添加到列表的末尾)将当前元素(索引)添加到结果列表中。

  • 打印不在给定输入范围内的集合中的元素的结果列表。

示例

以下程序使用for循环和not运算符返回给定输入范围中不在输入集合中的数字列表:

# input set
inputSet = {3, 10, 2, 11, 15, 4, 1}
# printing input set
print("Input set:", inputSet)
# input low and high indexes
lowIndex, highIndex = 0, 8
# resultant list for storing numbers, not in the set
resultantList = []
# travsersing in a range from input low and high index
for i in range(lowIndex, highIndex):
    # checking whether the current index does not exist in the input set
    if i not in inputSet:
        # appending the current element to the resultant list
        resultantList.append(i)
# printing the resultant list of elements not in a set
# within the specified range
print("Resultant list of elements not in a set within the specified range:\n", resultantList)

输出

执行上述程序将生成以下输出:

Input set: {1, 2, 3, 4, 10, 11, 15}
Resultant list of elements not in a set within the specified range:
 [0, 5, 6, 7]

使用“-”运算符

以下程序使用“-”运算符返回给定输入范围中不在输入集合中的数字列表:

示例

# input set 
inputSet = {3, 10, 2, 11, 15, 4, 1}
# printing input set 
print("Input set:", inputSet)
# input low and high indexes
lowIndex, highIndex = 0, 8
# Converting the numbers in the range to set 
# Subtracting this set from the given input set
resultantList = list(set(range(lowIndex, highIndex)) - inputSet)
# printing the resultant list of elements not in a set 
print("Resultant list of elements not in a set within the specified range:\n", resultantList)

输出

执行上述程序将生成以下输出:

Input set: {1, 2, 3, 4, 10, 11, 15}
Resultant list of elements not in a set within the specified range:
 [0, 5, 6, 7]

使用Counter()函数

Counter()函数 - 一个子类,用于计数可哈希的对象。调用/调用时,它会隐式地创建一个可迭代对象的哈希表。

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 使用import关键字从collections模块导入Counter函数。

  • 使用Counter()函数获取输入集合元素的频率,以键值对的形式。

  • 创建两个独立的变量来存储输入的下限上限索引。

  • 创建一个空列表来存储不在输入集合中的结果数字。

  • 使用for循环遍历输入下限和上限索引之间的范围。

  • 使用if条件语句检查当前元素是否不在集合频率的键中,使用keys()函数。

  • 使用append()函数将当前元素添加到结果列表中。

  • 打印不在给定输入范围内的集合中的元素的结果列表。

示例

以下程序使用Counter()函数返回给定输入范围中不在输入集合中的数字列表:

# importing Counter from collections
from collections import Counter
# input set
inputSet = {3, 10, 2, 11, 15, 4, 1}
# printing input set
print("Input set:", inputSet)
# getting the frequency of elements of the input set
setFrequency = Counter(inputSet)
# input low and high indexes
lowIndex, highIndex = 0, 8
# resultant list for storing numbers, not in the set
resultantList = []
# travsersing in a range from input low and high index
for i in range(lowIndex, highIndex):
    # checking whether the current element is not in keys of the set frequency
    if i not in setFrequency.keys():
        # appending current item to the resultant list
        resultantList.append(i)
print("Resultant list of elements not in a set within the specified range:\n", resultantList)

输出

执行上述程序将生成以下输出:

Input set: {1, 2, 3, 4, 10, 11, 15}
Resultant list of elements not in a set within the specified range:
 [0, 5, 6, 7]

结论

在本文中,我们学习了如何使用三种不同的方法查找在范围内但不在集合中的数字。此外,我们学习了如何使用range()函数获取指定索引之间的数字范围。最后,我们学习了如何利用Counter()函数快速有效地(O(1)时间复杂度)确定给定集合中是否存在元素。

更新于:2023年8月18日

280 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告