2012-03-06 11 views
0

ここに問題があるコードの領域があります。 T1とT3は、リストの両方のリストです:値がリストに存在するかどうかを検索すると奇妙な結果が発生する

for num in T1: 
    print num 
    print T3[0] 
    print type(num) 
    print type(T3[0]) 
    if num == T3[0]: 
     print 'they are the same!' 
    else: 
     print 'nope they are not!' 
    if T3.index(num): 
      print 'number exists in list!' 

ここでの結果です:

[0, 0] 
[0, 0] 
<type 'list'> 
<type 'list'> 
they are the same! 

私は見ていないときの値と型が同じであるが、「数がリストに存在します!」私がlist_name.index(value)をコマンドラインでテストしたところ、動作しますが、ここでは動作しません。私は間違って何をしていますか?

答えて

4

リストにその引数のインデックスを返し、引数が見つからない場合ValueErrorを上げるlist.index()方法。チェックは

if T3.index(num): 

は、基本的に引数のインデックスがゼロではない場合はテストしますが、例ではゼロになるため、チェックに失敗します。アイテムがリストに含まれているかどうかをテストしたいと思うかもしれません -

if num in T3: 

+0

ありがとうございました。言及すると、私は例を単純化しようとしましたが、T3.index(num)ステートメントは実際にtryステートメントでラップされました。私は試してみればフロー制御には向いていないことを知っていますし、あなたのやり方は実際に私にそれを使う必要がない方法を示しています。ありがとう、あなたは私に2つのことを教えました(1つの価格のために)。 –

0

問題は、このコード行である:

リストの index()方法は、この行い
if T3.index(num): 
      print 'number exists in list!' 

:「x値である最初の項目のリストにインデックスを返すことがある場合はエラーです。そのようなアイテムはありません。

(0)を探す最初の値はインデックス0です。ifステートメントはゼロ値をFalseとして扱い、正しく何もしません。

関連する問題