在Python 3中查找列表索引号?

时间:2018-12-27 14:41:53

标签: python python-3.x

我正在使用Python处理大量的质数,并试图通过在其他地方引用来查找质数在列表中的位置编号(在这种情况下,y的位置为2-> [x,x,y,x]) :

primelist = [104395303, 104395337] #it's a lot longer than that but you get the idea
print([primelist].index(104395303))

我希望它返回0-即104395303在名为 primelist 的列表中的位置,但收到错误消息:

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    print([primelist].index(104395303))
ValueError: 104395303 is not in list

为我的故障排除尝试提供证据的屏幕截图。

here

为什么我会收到此错误?除了已经尝试过的方法之外,我还应该怎么做才能达到期望的目标?

4 个答案:

答案 0 :(得分:1)

primelist.index(104395303)

已经是列表。不要将其包装在另一个列表中。

答案 1 :(得分:0)

您可以在运行.index之前检查它是否存在

primelist = [104395303, 104395337]
index_check = 104395303 in primelist
if(index_check):
    print(primelist.index(104395303))
else:
    print("Number not found")

答案 2 :(得分:0)

使用python if else块获取索引(如果存在),否则获取-1(如果不存在)

primelist = [104395303, 104395337]
num=104395303
index_= primelist.index(num) if num in primelist else -1 #index_ would be 0

如果该元素不存在于列表中,例如num=104395303,如果我们这样做primelist.index(num),它将抛出ValueError作为我们要尝试的元素find尚不存在,但是如果找不到元素,则可以使用if else块将索引分配为-1

primelist = [104395303, 104395337]
num=104395304 # num not present in list
index_= primelist.index(num) if num in primelist else -1 #index_ would be -1

或将您的代码包装在try except block

primelist = [104395303, 104395337]
num=104395304
try:
    index_= primelist.index(num)
except ValueError:
    index_=-1

print(index_)

答案 3 :(得分:0)

primelist.index(104395303)

...应该做的。

index函数只是找到传递的元素的索引。您所做的就是将列表放在另一个列表中。现在,如果要检查索引,则必须使用:

[primelist][0].index(104395337)

另一种更简单的方法是:

104395303 in primelist
True

这很容易与if条件结合使用,并且非常方便。