In funktionalen Sprachen gibt es Funktionen wie foldr und foldl, die eine Verarbeitung ausführen, bei der eine Art Array reduziert wird. Vor kurzem habe ich mich gefragt, ob es eine ähnliche Implementierung in Python gibt, aber ich habe festgestellt, dass es so etwas wie Reduse gibt.
Wenn Sie beispielsweise sicherstellen möchten, dass in einem Array, das nur aus Booleschen Werten besteht, alles wahr ist und Sie keine Wiederverwendung verwenden, kann dies zu folgendem schmutzigen Schreibstil führen.
python
def check_all_true(check_array):
result = True
for elem in check_array:
result = result and elem
return result
if __name__ == '__main__':
print check_all_true([True, True, True])
print check_all_true([True, False, True])
Wenn Sie dies zur Reduzierung umschreiben, sieht es wie folgt erfrischend aus.
python
def check_all_true(check_array):
return reduce(lambda prev, nxt: prev and nxt, check_array)
if __name__ == '__main__':
print check_all_true([True, True, True])
print check_all_true([True, False, True])
Die Substanz von Reduce scheint jedoch Foldl zu sein. Wenn Sie also wie Foldr arbeiten möchten, müssen Sie ein wenig überlegen.
Recommended Posts