1

既存のリストを取得し、ユーザー入力を要求し、リスト内のユーザー入力の要素を検索する基本的なプログラムがあります。それがどのインデックスにあるかを見つけて、インデックスを出力したい。リストにない値を入力すると、「ValueError: 7 is not in list」というエラー メッセージが表示されます。

プログラムがエラー メッセージを表示しないようにするには、または値がリストにないことをユーザーに知らせるにはどうすればよいですか?

編集、コードの追加:

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)

すべてのオカレンスがどのインデックスにあるかを見つけようとしているだけで、何もない場合はエラーメッセージを出力します。

4

5 に答える 5

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
于 2012-10-17T05:30:56.723 に答える
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)

同じ結果が返されます。つまり、何も見つからない場合は空のリストが返されます。

于 2012-10-17T05:34:53.650 に答える
2
print list1.index(value) if value in list1 else "Not Found"
于 2012-10-17T05:37:08.313 に答える
1

enumerate を使用したリスト内包表記は、このようなことを行う通常の方法ですが、本当に基本的な概念を使用することもそれほど難しくありません。

>>> 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]
于 2012-10-17T06:07:24.977 に答える
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'
于 2012-10-17T05:28:48.960 に答える