在处理列表、元组时,index函数只能够获取相同元素中第一个元素的下标,而不能获取所有相同元素的下标。不过我们可以通过for循环来获取所有相同元素的下标值。

ending = []  # ending作为接收所有相同元素的下标值的容器
list_A = [1, 2, 1, 3, 6, 1, 9]  # 我们假定要对该列表中的元素进行查找
finding = int(input('请输入你要查找的元素'))
times = list_A.count(finding)  # 首先我们要确定列表中含有多少我们所查找的元素,以备之后for循环使用
if times == 0:
    ending.append(None)  # 如果列表中没有我们要查找的元素,则返回None
    pass
else:
    for item in range(0, times):
        if item == 0:  # 这里为第一次查找时的情况
            position = list_A.index(finding)  # position作为接收元素下标的容器,并且为之后的查找提供起始位置
            ending.append(position)  # 向容器中添加当前元素的下标值
            pass
        else:
            position = list_A.index(finding, position + 1)  # 这里我们从上一个目标元素之后的一个元素开始查找,避免只能查找到第一个元素
            ending.append(position)
            pass
        pass
    pass
print(ending)  # 输出所有的下标值构成的列表

在实际使用时,需要查找的元素不一定属于int类型,我们可以通过强制类型转换来获取想要的数据类型。

在浏览CSDN中的其他帖子后,有了一种更加简洁的方法,即使用enumerate函数遍历列表或元组,进而获取下标值。

ending = []
list_A = [1, 2, 3, 2, 3, 4, 6, 10]
finding = int(input('请输入你要查找的元素:'))
for item, value in enumerate(list_A):  # 用enumerate函数遍历列表中的每一个元素,item接收下标值,value接收数据项
	if value == finding:
		ending.append(item)  # 将数据项对应的下标值添加到列表中
		pass
	else:
		pass
	pass
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐