Questa è una domanda di consigli per giocare a golf in Python .
In più golf che ho fatto in Python, un valore fisso è assegnato a una delle due variabili scelte da un booleano. La variabile scelta viene sovrascritta dal valore dato e l'altra rimane invariata.
17 caratteri:
if b:y=z
else:x=z
Assegnare un valore condizionale è facile , ma l'assegnazione a una variabile condizionale sembra voluminosa. Mi chiedo se mi manca un modo più breve.
Questo sarebbe facile se x,yinvece fosse un elenco L, ma supponiamo che il contesto richieda di fare riferimento alle variabili abbastanza che scrivere L[0]ed L[1]è proibitivo. La conversione richiede troppo tempo:
20 caratteri:
L=[x,y];L[b]=z;x,y=L
Il modo più veloce che conosco è con un Python 2 exec, che è bizzarro:
16 caratteri, Python 2:
exec"xy"[b]+"=z"
La scelta della tupla sembra essere più lunga:
18, 19, 18, 18 caratteri:
x,y=b*(x,z)or(z,y)
x,y=[z,x,y,z][b::2]
y,x=[y,z,x][b:b+2]
y,x,*_=[y,z,x][b:] # Python 3
Esiste un metodo più breve o ottimizzazione per il salvataggio dei caratteri? Puoi presumere che bsia 0o 1non solo Falsey o Truthy, e anche fare ipotesi sui tipi di dati e sui valori se aiuta.
x,y=C(x,y,z,b)(14 caratteri) e inserire una di queste implementazioni nel corpo diC.