2012-05-16 18 views
7

¿Hay alguna manera de abreviar una declaración de comparación en python para que no tenga que escribir todo de nuevo? Por ejemplo, en lugar de:abreviando una comparación doble en python

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

podría yo hacer algo como: si a == (3 o 2): print "hola mundo"

sé que el ejemplo anterior no funciona, pero ¿Hay alguna otra forma en que pueda lograr el efecto deseado?

Respuesta

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

Re la edición: ¿es preferible utilizar una tupla en lugar de una lista? – Levon

+4

@Levon: no tengo una fuerte preferencia de ninguna manera, pero en mi opinión una tupla parece un poco más natural aquí. – NPE

+0

ok, gracias .. Sé que a veces hay diferencias sutiles, solo quería asegurarme de no perderme nada, ya que generalmente uso listas para esto. – Levon

10

soluciones posibles, dependiendo de qué es exactamente lo que desea:

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

¿Hay algún beneficio en usar 'xrange' en lugar de' range' en este caso? Estoy muy contento de que Python 3 haya eliminado 'Xrange'. –

+0

@MarkRansom En este caso, probablemente no importe. – robert

+0

@robert + 1, pero si no importa, sería mejor usar el rango para la compatibilidad de py3x. – jamylak

10

Ver Python 3.2 Optimizations con respecto a la razón de la respuesta a continuación.

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

+1 Usar un juego es la mejor manera de hacerlo. – jamylak

Cuestiones relacionadas