watt ([info]watt) rakstīja [info]koderi kopienā,
@ 2007-11-12 12:04:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Poll #13271 list comprehensions vs. funkcionālais stils
Open to: All, results viewable to: All

Par kuru koda fragmentu tev ir vieglāk pateikt, ko tas dara un kāds būs rezultāts?

View Answers

a = [i for i in lst if i > 42]
13 (81.2%)

a = filter(lambda x: x > 42, lst)
3 (18.8%)



(Pieņemt ka lst = [50,1,60,2,70,3])
Sīkāk par lambda un funkcionālajiem frīkiem: http://hupp.org/adam/weblog/2007/11/10/python-lambda-shorthand/


(Ierakstīt jaunu komentāru)


[info]src
2007-11-12 12:21 (saite)
jocīgi, konkrētajā gad. lambda ar nemaz neizskatās slikti, bet tāds nospiedošs pārsvars

(Atbildēt uz šo) (Diskusija)


[info]watt
2007-11-12 12:28 (saite)
ko "for" dara visi zin.

(Atbildēt uz šo) (Iepriekšējais)


[info]watt
2007-11-12 12:30 (saite)
principā vajadzēja iekļaut arī jautājumu ar a = filter(λ x: x > 42, lst)

(Atbildēt uz šo) (Iepriekšējais)


[info]begemots
2007-11-12 16:51 (saite)
elementāri: a) variants nedaudz vairāk seko ikdienas valodas struktūrai, nav jāpārslēdzas, ja redzi.

(Atbildēt uz šo) (Iepriekšējais)


[info]barvins
2007-11-12 13:10 (saite)
Saīsinājumi ir slinkiem cilvēkiem, kas raksta ar roku uz papīra, nevis programmētājiem ar intellisense vai tamlīdzīgiem tūļiem. Saīsinājumi apgrūtina lasīšanu un saprašanu (varbūt lst ir "list", varbūt "last").

(Atbildēt uz šo)


[info]bubu
2007-11-15 23:47 (saite)
Otrais variants pie tam būs lēnāks, jo tam būs jāizsauc tā lambda funkcija uz katru lista elementu. Ne velti Gvido izmeta ārā reduce no Python3k. filter gan vēl palika..

(Atbildēt uz šo) (Diskusija)


[info]watt
2007-11-17 11:08 (saite)
nav jau obligāti kompilēt to lambdu kā funkciju: vienkāršākos gadījumus tas ir tikai expression, kas jāiekompilē tai otrā funkcijā vajadzīgajā vietā. tb viss atkarīgs no optimizatora.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bubu
2007-11-17 16:20 (saite)
Tas, ka optimizators to varētu, es nemaz nešaubos. Bet ja pats Guido saka, ka lambda ir lēnāka, tad es viņam ticu uz vārda ;)

http://www.artima.com/weblogs/viewpost.jsp?thread=211200
Don't use these with a lambda though; then a list comprehension is clearer and faster.

(Atbildēt uz šo) (Iepriekšējais)


Neesi iežurnalējies. Iežurnalēties?