Je mettrai à jour de temps en temps les techniques que j'ai apprises dans le show coding récemment commencé sur le site codefights.
Considération de codage court
L'opérateur de comparaison <= peut être omis et peut être réduit de ** 1 caractère **
# long
a <= 3
# short (Quand a est un entier)
a < 4
Correspond à -1 et +1 respectivement Cependant, comme il a une priorité plus élevée que l'opérateur de multiplication, il peut être réduit de ** 2 caractères ** en omettant les parenthèses.
# long
b * (a - 1) * 5
# short
b * ~-a * 5
: (Deux-points) et le côté gauche de l'affectation peuvent être omis
# long
if a < b:
c = 4
else:
c = 2
# short
c = 4 if a < b else 2
(Python2 uniquement)
Utilisez \ \
pour convertir en chaîne
# long
str(1600)
# short
`1600`
Si vous souhaitez renvoyer une valeur logique exactement, utilisez une opération logique sans utiliser True ou False.
# long
b = False
# short
b = 0 > 1
# long
return True
# short
return 1 > 0
import as Raccourcissez également le module à importer
# long
import math
math.sqrt(10)
# short
import math as m
m.sqrt(10)
Connectez plusieurs comparaisons de chaînes et effectuez à la fois
#Le premier et le dernier caractères correspondent
# long
a[0] == b[0] and a[-1] == b[-1]
# short
a[0] + a[-1] == b[0] + b[-1]
#a et b,c et d ont la même longueur(Ou unique même lorsqu'il est combiné)Si
# long
a == b and c == d
# short
a + c == b + d
S'il s'agit d'un codefights Challenge, la réponse sous forme de fonction sera testée.
lambda Si possible, vous pouvez réduire ** 4 caractères ** en convertissant la fonction en une expression lambda.
# long
def Hoge(n):
return n * 2
# short
Hoge = lambda n: n * 2
Les noms d'argument peuvent être un caractère car il existe de nombreux cas où ils ne sont pas explicitement appelés.
# long
def Hoge(arg):
return arg ** arg
# short
def Hoge(a):
return a ** a
Affecter à une variable à une lettre lors de l'utilisation récursive
# long
def LongLongHoge(a):
if a < 3:
return a
return LongLongHoge(a - 2) * LongLongHoge(a - 1)
# short
def LongLongHoge(a):
if a < 3:
return a
return t(a - 2) * t(a - 1)
t = LongLongHoge
Encore plus court avec lambda et affectation simultanée
# short
LongLongHoge = t = lambda a: a if a < 3 else t(a - 2) * t(a - 1)
# long
t = a % 3
if t == 0:
a = a * 2
elif t == 1:
a = 0
elif t == 2:
a = t * 2
# short
a = [a * 2, 0, (a % 3) * 2][a % 3]
# short
t = a % 3
a = [a * 2, 0, t * 2][t]
(a <b) renvoie Vrai et Faux, mais peut être utilisé pour l'arithmétique comme 1, 0 respectivement Il existe de nombreux modèles qui peuvent être omis en l'utilisant
# long
c = 4 if a < b else 2
# short
c = 2 + 2 * (a < b)
# long
myhex = lambda n: '%X' % n
# short
myhex = '{:X}'.format
myhex = '%X'.__mod__
Recommended Posts