2012-05-16 18 views
7

pythonで比較文を省略して、全体をもう一度書く必要はありませんか?たとえば、代わりの:Pythonでの二重比較の略語

a=3 
if a==3 or a==2: 
    print "hello world" 

私はのような何かを行うことができます:==(3または2)場合 を: プリント "Hello World" の

は、私は上記の例は動作しません知っているが、私は希望の効果を達成することができる別の方法はありますか?正確に何をしたいに応じて、

答えて

13
if a in (2, 3): 
    print "hello world" 
+0

あなたの編集:リストの代わりにタプルを使用するのが望ましいですか? – Levon

+4

@ Levon:いずれの方法でも強い好みはありませんが、私の目にはタプルが少し自然なように見えます。 – NPE

+0

ok、ありがとう..私はときどき微妙な違いがあることを知っています、私は一般的にこのためにリストを使用するので、私は何かを見逃していないことを確認したかった。 – Levon

10

考えられる解決策:

  • if a in (2,3)
  • if a in xrange(2, 4)
  • if 2 <= a <= 3
+0

この場合、 'range'の代わりに' xrange'を使うとメリットはありますか?私はPython 3が 'xrange'をやってしまったことをうれしく思います。 –

+0

@ MarkRansomこの場合、おそらく問題ではありません。 – robert

+0

@robert + 1b py3xとの互換性のためにrangeを使用するのが最善の方法です。 – jamylak

10

は、以下の回答の理由についてPython 3.2 Optimizationsを参照してください。

a = 3 
if a in {2, 3}: 
    print('Hello, world!') 
+1

+1セットを使うのがこのための最良の方法です。 – jamylak