Seite 1 von 1
Verfasst: Sonntag 31. August 2008, 20:35
von str1442
Kurz was anderes, wollte dafür jetzt kein neues Thema eröffnen:
reduce soll mit python3k entfernt werden, richtig? Warum? Ich empfinde es inzwischen als ziemlich nützlich. Oder kann man Dinge, die man mit Reduce machen kann, besser / durchschaubarer mit anderen Dingen machen, und es ist damit praktisch ein "unnützes Spezialwerkzeug"?
Wenn das für ein neues Thema wert genug erscheint, tut's mir leid.
Verfasst: Sonntag 31. August 2008, 20:40
von Darii
reduce wird nicht entfernt, sondern nur nach functools verschoben
und ja du hättest dafür ein neues Thema auf machen sollen. Nicht unbedingt weil es das wert wäre sondern weils hier überhaupt nicht zugehört.
Verfasst: Sonntag 31. August 2008, 20:40
von BlackJack
@str1442: `reduce()` wird nicht entfernt, sondern nur in ein Modul (`functools`) verschoben. Empfohlene Alternative ist eine explizite ``for``-Schleife. Weil angeblich zu viele Leute zu doof sind `reduce()` zu verstehen. Sagt Guido.
Verfasst: Sonntag 31. August 2008, 20:42
von veers
str1442 hat geschrieben:Kurz was anderes, wollte dafür jetzt kein neues Thema eröffnen:
reduce soll mit python3k entfernt werden, richtig? Warum? Ich empfinde es inzwischen als ziemlich nützlich. Oder kann man Dinge, die man mit Reduce machen kann, besser / durchschaubarer mit anderen Dingen machen, und es ist damit praktisch ein "unnützes Spezialwerkzeug"?
Wenn das für ein neues Thema wert genug erscheint, tut's mir leid.
Naja import reduce from functools
Wobei ich es inkonsequent finde reduce zu verbannen und map da zu lassen. Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
Verfasst: Sonntag 31. August 2008, 21:00
von Leonidas
veers hat geschrieben:Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
__builtins__ patchen
Oder, naja, eine funktionale Sprache verwenden
Verfasst: Sonntag 31. August 2008, 21:06
von name
Ich finds nicht schlecht das sie die Generator Expressions die besser lesbar sind mehr in den Vordergrund bringen. Und Guido meint das reduce auch für ihn kompliziert ist
So now reduce(). This is actually the one I've always hated most, because, apart from a few examples involving + or *, almost every time I see a reduce() call with a non-trivial function argument, I need to grab pen and paper to diagram what's actually being fed into that function before I understand what the reduce() is supposed to do. So in my mind, the applicability of reduce() is pretty much limited to associative operators, and in all other cases it's better to write out the accumulation loop explicitly.
Verfasst: Sonntag 31. August 2008, 21:39
von veers
Leonidas hat geschrieben:veers hat geschrieben:Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
__builtins__ patchen
Oder, naja, eine funktionale Sprache verwenden
Die rein Funktionalen sprachen sind mir dann eben doch zu funktional und meist zu unleserlich
Verfasst: Sonntag 31. August 2008, 21:59
von audax
Code: Alles auswählen
from itertools import *
from functools import *
from functional import *
import operator as op
Und schon ist man gewappnet
Im nachinein kann man die Imports immer noch sortieren :]
Verfasst: Sonntag 31. August 2008, 23:41
von Leonidas
veers hat geschrieben:Die rein Funktionalen sprachen sind mir dann eben doch zu funktional und meist zu unleserlich
Ich muss ja sagen, dass das Chaining in Scala mir doch durchaus gut gefallen hat, ebenso die Range-Syntax. OCaml hingegen ist typisch-funktional mit konfuser Syntax
Verfasst: Freitag 5. September 2008, 10:23
von sma
Das Entfernen von `reduce` aus `__builtins__` ist Teil von Googles geheimer Strategie, den Leuten es schwerer zu machen, den Map-Reduce-Algorithmus selbst zu implementieren, was sie (noch) stärker an Google bindet und abhängiger macht. Merke: Giuogle weiß, was gut für dich ist. ;)
Ich find's bedauerlich, denn selbst das eine notwendige import ist lästig.
Stefan
Verfasst: Freitag 5. September 2008, 15:05
von Y0Gi
`reduce()` habe ich erst kürzlichst benutzt und es macht den Code kürzer, aber zugegeben auch komplizierter zu verstehen. Whatever. Durch den später notwendigen Import würde ich wohl auch eine for-Schleife vorziehen, allerdings hält hier einige auch `from operator import attrgetter, itemgetter` nicht ab
veers hat geschrieben:Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
Hab ich was in den Py3K-PEPs übersehen oder kann man jetzt "rückwärts" importieren?
sma:
In other news, das Ding heißt jetzt nicht mehr MapReduce, sondern MapFor