In quale classe metteresti questi metodi?
In python, posso usare map
su liste, tuple, dizionari, file, stringhe, insiemi, matrici, ecc. Non esiste una classe base di raccolta per mettere un map
, reduce
, filter
ecc. on.
Ora, python avrebbe potuto avere una classe di raccolta da cui ereditavano tutte queste diverse cose. Ma sarebbe davvero contro lo "spirito" di Python. In python tutto è anatra battuto a macchina. Le cose funzionano in virtù del fatto che hai i giusti metodi. Puoi utilizzare map
, reduce
e filter
su tutto ciò che definisce __iter__
. Dovendo sottoclasse una classe di raccolta andrebbe contro quella.
Così com'è, map / reduce / filter non sono realmente considerate le soluzioni pythonic.
Invece di map(x, lambda y: y+1)
usa [y + 1 for y in x]
Invece di filter(x, lambda y: y % 2 == 0)
usa [y for y in x if y % 2 == 0]
Invece di reduce(x, lambda x,y: x+y)
usa
sum = 0
for y in x:
sum += y