Il est trop détaillé pour écrire les astuces liées à Python un par un, je vais donc les résumer ici.
Algorithm
Unique
Pour une séquence, créez une séquence avec uniquement des éléments uniques. Le code ci-dessous provient de Stack OverFlow:
def uniquify(seq):
seen = set()
seen_add = seen.add
return [x for x in seq if x not in seen and not seen_add(x)]
[Wandbox] Allez à Sanhe (il՞ ਊ՞) ha ha
C'est intéressant. Vous ne pouvez toucher que les méthodes liées.
Split
À partir d'une certaine séquence, créez une séquence divisée par la longueur n. Le code ci-dessous est basé sur here:
l = 10
n = 4
zip(*[iter(range(l))]*n)
import itertools
itertools.izip_longest(*[iter(range(l))]*n)
import more_itertools
more_itertools.chunked(range(l), n)
[Wandbox] Allez à Sanhe (il՞ ਊ՞) ha ha
Once
Même si une fonction est appelée plusieurs fois, elle n'est traitée qu'une seule fois.
def run_once(f):
def wrapper(*args, **kwargs):
if not wrapper.has_run:
wrapper.has_run = True
return f(*args, **kwargs)
wrapper.has_run = False
return wrapper
@run_once
def greeting():
print('Hello.')
greeting()
greeting()
greeting()
[Wandbox] À Sanhe (il՞ ਊ՞) ha ha
Un traitement exclusif sera nécessaire pour les appels parallèles. Le code ci-dessus n'en tient pas compte. Par conséquent, je pense que ce code est un mauvais savoir-faire.
TODO: besoin d'amélioration
Reversed numpy.cumsum
Recommended Posts