Es ist zu detailliert, um Python-bezogene Tipps einzeln zu schreiben, daher werde ich sie hier zusammenfassen.
Algorithm
Unique
Erstellen Sie für eine Sequenz eine Sequenz mit nur eindeutigen Elementen. Der folgende Code stammt von 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] An Sanhe (er՞ ਊ՞) ha ha
Das ist interessant. Sie können nur die gebundenen Methoden berühren.
Split
Erstellen Sie aus einer bestimmten Sequenz eine Sequenz, die durch die Länge n geteilt wird. Der folgende Code basiert auf hier:
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] An Sanhe (er՞ ਊ՞) ha ha
Once
Selbst wenn eine Funktion mehrmals aufgerufen wird, wird sie nur einmal verarbeitet.
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] An Sanhe (er՞ ਊ՞) ha ha
Für parallele Anrufe ist eine ausschließliche Verarbeitung erforderlich. Der obige Code berücksichtigt dies nicht. Daher halte ich diesen Code für schlechtes Know-how.
TODO: Verbesserungsbedarf
Reversed numpy.cumsum
Recommended Posts