Python程序查找元组列表中其他元组的索引


为了从其他元组列表中查找元组索引,我们可以使用Python的enumerate函数和index函数。

一个有序且不可变的对象组被称为元组。元组和列表都是序列。元组和列表的区别在于,元组不能更改,而列表可以更改,并且元组使用圆括号,而列表使用方括号。

示例

假设我们已经获取了一个包含元组的输入列表和另一个搜索元组列表。现在,我们将搜索给定输入列表中搜索元组列表的索引。

输入

inputList = [(1, 3), (2, 4), (5, 7), (6, 8)]
searchTupleList = [(1, 3), (5, 7), (3, 8), (7, 2)]

输出

Index of searched tuple in the input list: [0, 2]

使用列表推导式、查找字典和enumerate()函数

enumerate()方法为可迭代对象添加一个计数器,并返回enumerate对象。

语法

enumerate(iterable, start=0)

参数

  • iterable - 它可以是任何支持迭代的序列/对象/可迭代对象

  • start - enumerate()从该值开始计数。如果未指定start,则使用值0。

算法(步骤)

以下是执行所需任务需要遵循的算法/步骤。

  • 创建一个变量来存储元组输入列表

  • 打印输入列表

  • 创建另一个变量来存储输入搜索元组列表,其值需要在输入列表中搜索。

  • 使用enumerate()函数获取输入列表的元素和索引值作为键值对。

  • 使用列表推导式遍历searchTuple列表,并检查元素是否存在于上述查找字典中。

  • 如果存在,则存储其索引。

示例

以下程序使用列表推导式、查找字典和enumerate()函数返回其他元组列表中的元组索引:

# input list of tuples
inputList = [(1, 3), (2, 4), (5, 7), (6, 8)]
# printing input list
print("Input List: ", inputList)
# input search tuple list whose values are to be searched in input list
searchTupleList = [(10, 6), (5, 7), (3, 8), (7, 2)]
# getting the element and index values of input list as a value-key pairs
searchDict = {v: k for k, v in enumerate(inputList)}
# Checking whether the tuple exits and if exists then storing the index of it.
resultantList = [searchDict[idx]
   for idx in searchTupleList if idx in searchDict]
#  printing resultant list of index
print("Index of searched tuple in input list:", resultantList)

输出

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

Input List:  [(1, 3), (2, 4), (5, 7), (6, 8)]
Index of searched tuple in input list: [2]

使用列表推导式和enumerate()函数

当您希望根据现有列表的值构建新列表时,列表推导式提供了一种更短/简洁的语法。

示例

以下程序使用列表推导式和enumerate()函数返回其他元组列表中的元组索引:

# input list of tuples
inputList = [(1, 3), (2, 4), (5, 7), (6, 8)]	
# printing input list
print("Input List: ", inputList)
# input search tuple list whose values are to be searched in input list
searchTupleList = [(1, 3), (5, 7), (3, 8), (7, 2)]
# Getting the result using the concise syntax using list comprehension
resultantList = [i for i, value in enumerate(inputList) for element in searchTupleList if element == value]
# printing resultant list of indices
print("Index of searched tuple in input list:", resultantList)

输出

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

Input List:  [(1, 3), (2, 4), (5, 7), (6, 8)]
Index of searched tuple in input list: [0, 2]

使用index()方法

index()方法返回提供的值在第一次出现时的位置。

语法

list.index(element)

算法(步骤)

以下是执行所需任务需要遵循的算法/步骤。

  • 创建一个变量来存储元组输入列表

  • 打印输入列表。

  • 创建另一个变量来存储输入搜索元组列表,其值需要在输入列表中搜索。

  • 初始化一个新的空列表以存储结果列表。

  • 使用for循环遍历searchTupleList。

  • 使用if条件语句检查当前元素是否存在于输入列表中。

  • 使用index()函数获取当前元素的索引,并使用append()函数将其追加到结果列表中(将元素添加到列表的末尾)。

  • 打印结果列表。

示例

以下程序使用列表推导式和enumerate()函数返回其他元组列表中的元组索引:

# input list of tuples
inputList = [(1, 3), (2, 4), (5, 7), (6, 8)]		
# printing input list
print("Input List: ", inputList)
# input search tuple list whose values are to be searched in the input list
searchTupleList = [(10, 6), (5, 7), (3, 8), (7, 2)]
# Creating a variable to store the result indices list 
resultantList=[]
# traversing through searchTupleList
for p in searchTupleList:
    # checking whether the current element is present in an input list 
	if p in inputList:
       #  getting the index of current element and appending it to the resultant list 
		resultantList.append(inputList.index(p))
# printing resultant list of indices
print("Index of searched tuple in input list:", resultantList)

输出

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

Input List:  [(1, 3), (2, 4), (5, 7), (6, 8)]
Index of searched tuple in input list: [2]

结论

在本文中,我们学习了如何使用3种不同的方法从其他元组列表中查找元组索引。我们还学习了如何使用enumerate()函数迭代可迭代对象的索引和元素值。最后,我们学习了如何使用index()函数检索元组对。

更新于:2023年8月18日

191 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告