python plot - ¿Cómo escribir en línea si la declaración para imprimir?




title subplot (12)

Si no desea from __future__ import print_function , puede hacer lo siguiente:

a = 100
b = True
print a if b else "",  # Note the comma!
print "see no new line"

Que imprime:

100 see no new line

Si no estás en contra from __future__ import print_function o estás usando python 3 o posterior:

from __future__ import print_function
a = False
b = 100
print(b if a else "", end = "")

Agregar el else es el único cambio que necesita hacer para que su código sea sintácticamente correcto, necesita el else para la expresión condicional (el "en línea si el resto está bloqueado")

La razón por la que no usé None o 0 como han usado otros en el hilo, es porque el uso de None/0 causaría que el programa print None o print 0 en los casos donde b es False .

Si desea leer sobre este tema, he incluido un link a las notas de la versión para el parche que esta característica se agregó a Python.

El 'patrón' anterior es muy similar al patrón que se muestra en PEP 308:

Esta sintaxis puede parecer extraña y al revés; ¿Por qué la condición va en medio de la expresión, y no en el frente como en la C de C? x: y? La decisión se verificó aplicando la nueva sintaxis a los módulos en la biblioteca estándar y viendo cómo se lee el código resultante. En muchos casos donde se usa una expresión condicional, un valor parece ser el "caso común" y un valor es un "caso excepcional", que se usa solo en raras ocasiones cuando no se cumple la condición. La sintaxis condicional hace que este patrón sea un poco más obvio:

contents = ((doc + '\ n') si doc else '')

Así que, en general, creo que esta es una forma razonable de acercarse, pero no se puede discutir con la simplicidad de:

if logging: print data

Necesito imprimir algunas cosas solo cuando una variable booleana está configurada en True . Entonces, después de ver this , lo intenté con un ejemplo simple:

>>> a = 100
>>> b = True
>>> print a if b
  File "<stdin>", line 1
    print a if b
             ^
SyntaxError: invalid syntax  

Lo mismo si escribo print a if b==True .

¿Que me estoy perdiendo aqui?


Puedes usar:

print (1==2 and "only if condition true" or "in case condition is false")

Así como puedes seguir así:

print 1==2 and "aa" or ((2==3) and "bb" or "cc")

Ejemplo del mundo real:

>>> print "%d item%s found." % (count, (count>1 and 's' or ''))
1 item found.
>>> count = 2
>>> print "%d item%s found." % (count, (count>1 and 's' or ''))
2 items found.

Desde 2.5 se puede usar el operador condicional ternario equivalente a "?:" De C y la sintaxis es:

[on_true] if [expression] else [on_false]

Entonces tu ejemplo está bien, pero simplemente debes agregar else , como:

print a if b else ''

Simplemente eres demasiado complicado.

if b:
   print a

Esto se puede hacer con el formato de cadena . Funciona con la notación%, así como .format() y f-strings (nuevo a 3.6)

print '%s' % (a if b else "")

o

print '{}'.format(a if b else "")

o

print(f'{a if b else ""}')

Bueno, ¿por qué no simplemente escribe:

if b:
    print a
else:
    print 'b is false'

Prueba esto . Te podria ayudar

a=100
b=True

if b:
   print a

Para tu caso esto funciona:

a = b or 0

Edit: ¿Cómo funciona esto?

En la pregunta

b = True

Así que evaluando

b or 0

resultados en

True

que se asigna a a .

Si b == False? , b or 0 evaluaría el segundo operando 0 que se asignaría a a .


La declaración 'else' es obligatoria. Puedes hacer cosas como esta:

>>> b = True
>>> a = 1 if b else None
>>> a
1
>>> b = False
>>> a = 1 if b else None
>>> a
>>> 

EDITAR:

O, dependiendo de sus necesidades, puede intentar:

>>> if b: print(a)

hmmm, puedes hacerlo con una lista de comprensión . Esto solo tendría sentido si tuviera un rango real ... pero hace el trabajo:

print([a for i in range(0,1) if b])

o usando solo esas dos variables:

print([a for a in range(a,a+1) if b])

Python no tiene una sentencia if arrastre.

Hay dos tipos de if en Python:

  1. if declaración:

    if condition: statement
    if condition:
        block
    
  2. if expresión (introducida en Python 2.5)

    expression_if_true if condition else expression_if_false
    

Y tenga en cuenta que ambas print a y b = a son declaraciones. Sólo la a parte es una expresión. Así que si escribes

print a if b else 0

significa

print (a if b else 0)

y de manera similar cuando escribes

x = a if b else 0

significa

x = (a if b else 0)

Ahora, ¿qué imprimiría / asignaría si no hubiera else cláusula? La impresión / asignación todavía está allí .

Y tenga en cuenta que si no desea que esté allí, siempre puede escribir la instrucción if regular en una sola línea, aunque es menos legible y realmente no hay razón para evitar la variante de dos líneas.


Utilice ValueSortedDict de los dicts :

from dicts.sorteddict import ValueSortedDict
d = {1: 2, 3: 4, 4:3, 2:1, 0:0}
sorted_dict = ValueSortedDict(d)
print sorted_dict.items() 

[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]




python if-statement inline