我有一个基本程序,它接受现有列表,询问用户输入,并在列表中搜索用户输入的元素。我希望它找到它所在的索引,并打印索引。当我输入一个不在列表中的值时,我收到错误消息:" ValueError:7不在列表中"
如何阻止程序提供错误消息,或让用户知道该值不在列表中?
编辑,添加代码:
L = [4, 10, 4, 2, 9, 5, 4]
L2 = []
print ("L = ",L)
x = input("Enter an element to search for in the list: ")
x = int(x)
m = L.index(x)
L2.append(m)
print("Found occurences at indexes: ",L2)
我只想查找所有事件的索引,如果没有,请打印错误信息。
答案 0 :(得分:4)
为此您尝试使用除了避免错误。例如,请参阅以下代码:
>>> list_1=[1,2,3,4,5]
>>> input=raw_input("Enter the number:")
Enter the number: 5
>>> try:
... index=list_1.index(int(input))
... print "The index is %s" %index
... except ValueError:
... print "The number is not in the list"
...
The index is 4
如果再次执行它并输入不在列表中的值,您将获得使用except处理的消息。
Enter the number:7
The number is not in the list
答案 1 :(得分:4)
.index
不是要走的路,因为它只找到第一次出现的元素。迭代整个列表并匹配各个元素:
L2 = [i for i,a in enumerate(L) if a == x]
if L2:
print "Element found at positions: ", L2
else:
print "Element is not in the list"
L2
是一个空列表或包含所有索引,其中x
可以在L
中找到。
编辑:没有enumerate
的“硬”方式:
L2 = []
i = -1
while x in L[i+1:]:
i = L[i+1:].index(x) + i + 1
L2.append(i)
返回相同的结果,即如果没有找到则为空列表。
答案 2 :(得分:2)
print list1.index(value) if value in list1 else "Not Found"
答案 3 :(得分:1)
使用枚举的列表理解是执行此类操作的常用方法,但使用真正的基本概念并不困难。
>>> L = [4, 10, 4, 2, 9, 5, 4]
>>> L2 = []
>>> x = 4
>>> for i in range(len(L)):
... if L[i] == x:
... L2.append(i)
...
>>> L2
[0, 2, 6]
答案 4 :(得分:0)
尝试对列表进行简单的检查(这只是一个准确的例子 - 不会解决多次出现等问题。)这使用Python的in
运算符,并且更加冗长比它需要的那样你可以看到发生了什么:
>>> def SimpleCheck(my_list, num):
... if num in my_list:
... return l.index(num)
... else:
... return 'Nada'
...
>>> l = ['one', 'two', 'three']
>>> SimpleCheck(l, 'three')
2
>>> SimpleCheck(l, 'four')
'Nada'