2012-05-02 5 views
174

タプルのリストがPythonにあります。タプルがリストに含まれていない場合にのみ分岐を取るという条件付きです私はifブランチを望んでいません)Pythonのリストに何かがないかチェックしてください

if curr_x -1 > 0 and (curr_x-1 , curr_y) not in myList: 

    # Do Something 

これは実際には私のためには機能しません。私は何を間違えたのですか?それが正常に動作する必要がありますので

+9

変数として 'list'を使用しないでください名。ここでエラー出力は何ですか? – bossylobster

+1

'3 -1> 0と(4-1,5)が[]'⤇ 'True'ではないことに注意してください。したがって、エラーは演算子の優先順位の1つではありません。 –

+2

"本当に私のために働いていない"とはどういう意味ですか?何が起こると思いますか?実際に何が起こるのですか?どのような正確なリストの内容が問題を引き起こしますか? –

答えて

269

バグは、どこか他のあなたのコードでは、おそらくです:

>>> 3 not in [2, 3, 4] 
False 
>>> 3 not in [4, 5, 6] 
True 

またはタプルで:

>>> (2, 3) not in [(2, 3), (5, 6), (9, 1)] 
False 
>>> (2, 3) not in [(2, 7), (7, 3), "hi"] 
True 
+8

@Zack:あなたが知りませんでしたこれは、コレクション内の要素でない場合、 ' – ninjagecko

+0

@ ninjagecko:効率が悪い、または不正確かもしれないコンテナの種類によって決まります。例えば[bloom filters](http://en.wikipedia.org/wiki/Bloom_filter)を参照してください。 – orlp

+0

リストの中にタプルを定義していたのですが、ありがとうございました – Zack

-1
a = [23, 11, 21, 34, 53, 89, 133, 211, 345, 535, 895] 

b = [11, 32, 33, 45, 25, 66, 87, 863, 97, 130, 141, 126, 13] 

x=[] 
for i in a: 
    for j in b: 
     if i==j and j not in x: 
      x.append(j) 

print(x) 
関連する問題