Python 访问集合中的第K个元素而不删除
在Python中,一个 集合 是一个无序的独特元素集合,用{}表示。它允许高效的成员测试并消除重复的值,因此在去除重复项或检查集合之间的共同元素时非常有用。
在本文中,我们将学习如何在Python中访问集合中的第K个元素而不删除。
示例
假设我们有一个 输入集合 和 K元素 。现在我们将使用上述方法在输入集合中找到该K元素的索引。
输入
inputSet = {3, 9, 5, 1, 2, 8}
k=5
输出
The index of given K{ 5 } in an input set: 3
在上面的输入集中,输入K即5位于输入集的第3个索引处。因此,输入集中结果k的位置为3。
使用的方法
以下是完成此任务的各种方法:
- 使用for循环
-
使用next()和iter()函数
-
使用list()和index()函数
方法1:使用for循环
在这种方法中,我们只需使用一个简单的for循环来访问set中的K元素,而不删除任何元素。
步骤
执行所需任务的算法/步骤如下:
- 创建一个变量来存储输入集。
-
打印输入集。
-
创建另一个变量来存储输入k的值。
-
假设初始结果位置为-1(因为索引从0开始)。
-
使用for循环遍历输入集的每个元素。
-
在循环中递增结果位置1。
-
使用if条件语句检查当前元素是否等于输入k的值。
-
如果条件为真,则中断循环。
-
打印给定K元素在输入集中的结果索引。
示例
以下程序使用for循环返回给定K元素在输入集中的索引。
# input set
inputSet = {3, 9, 5, 1, 2, 8}
# printing input set
print("Input Set:", inputSet)
# input k value
k = 5
# initializing the result position as -1(as index starts from 0)
resultPosition = -1
# traversing through each element of the input set
for e in inputSet:
# incrementing the result position by 1
resultPosition += 1
# checking whether the current element is equal to the k
if e == k:
# breaking the loop if the condition is true
break
# printing resultant index
print("The index of given K{", k, "} in an input set:", resultPosition)
输出
执行上述程序后,将生成以下输出结果。
Input Set: {1, 2, 3, 5, 8, 9}
The index of given K{ 5 } in an input set: 3
方法2:使用next()和iter()函数
在这种方法中,我们将使用next()和iter()函数来访问集合中的第k个元素,而不删除任何其他元素。
iter函数()
返回一个迭代器对象。该函数将可迭代对象转换为迭代器。
语法
iter(object, sentinel)
参数
- object(必需): 它是一个可迭代的对象。
-
sentinel(可选): 它是一个表示序列结束的值。
返回值: 返回一个迭代器对象。
next()函数
返回迭代器中的下一个项目,如列表、字符串元组等。如果可迭代对象到达尽头,您可以添加一个默认的返回值。
步骤
以下是执行所需任务的算法/步骤:
- 使用 iter()函数 将输入集转换为迭代器。
-
使用 for循环 通过使用len()函数(返回对象中的项目数)遍历输入集的长度。
-
使用 next()函数 将输入集的索引/位置递增到下一个位置。
-
使用 if条件 语句检查当前元素是否等于输入的k值。
-
如果条件为 true ,则中断循环。
-
打印给定K元素在输入集中的结果索引。
示例
以下程序使用next()和iter()函数返回输入集中给定K元素的索引。
# input set
inputSet = {3, 9, 5, 1, 2, 8}
# printing input set
print("Input Set:", inputSet)
# input k value
k = 5
# converting input set to the iterator
setIter = iter(inputSet)
# traversing through the length of input set
for i in range(len(inputSet)):
# incrementing the index/position of set to next position using next() function
e = next(setIter)
# checking whether the current element is equal to the k
if e == k:
# breaking the loop if the condition is true
break
# printing resultant index
print("The index of given K{", k, "} in an input set:", i)
输出
执行上述程序后,会生成以下输出结果。
Input Set: {1, 2, 3, 5, 8, 9}
The index of given K{ 5 } in an input set: 3
方法3:使用list()和index()函数
在这个例子中,我们将使用python的list()和index()函数的组合来访问给定集合中的第K个元素。
index()函数
index()函数返回提供的值第一次出现的位置。
语法
list.index(element)
步骤
以下是执行所需任务的算法/步骤:
- 使用 list() 函数(将序列/可迭代对象转换为列表)将输入集合转换为列表。
-
使用 index() 函数通过传递 k 值来从上述列表中获取输入 k 值的索引。
-
打印给定 K 元素在输入集合中的结果索引。
示例
以下程序使用list()和index()函数返回输入集合中给定 K 元素的索引:
inputSet = {3, 9, 5, 1, 2, 8}
# printing input set
print("Input Set:", inputSet)
# input k value
k = 5
# converting input set into list
setElementsList =list(inputSet)
# getting the index of input k value from the above list of set elements
resultPosition = setElementsList.index(k)
# printing resultant index
print("The index of given K{",k,"} in an input set:", resultPosition)
输出
Input Set: {1, 2, 3, 5, 8, 9}
The index of given K{ 5 } in an input set: 3
结论
在本文中,我们学习了3种不删除集合中的K元素的方法。我们学习了如何使用iter()函数遍历给定的可迭代对象,并使用next()函数移动到其后面的位置。最后,我们学习了如何从给定的集合中创建一个列表,以及如何使用index()函数来定位集合中元素的索引。