[python] Seznamy

Pavel S pavel na schon.cz
Pondělí Únor 9 14:06:01 CET 2015


Jeste jedno reseni tu mame, ktere je ciste funkcnionalni, nebot nepouziva imperativni operace jako pop() apod.

result = (
    set.intersection(
        *map(
             set,
             filter(
                operator.truth,
                ( list_a, list_b, list_c )))))



Dne sobota 7. února 2015 22:24:59 UTC+1 Ales Zoulek napsal(a):
> "lists.pop()" melo byt pravdepodobne "sets.pop()", jinak urcite radsi to druhy.
> 
> 
> 
> Jinak na to existuje zkratka, ktera dela v zasade to stejne - set.intersection() bere jako parametr libovolny pocet setu. Takze toto by melo byt rozumne kratky a furt dost citelny:
> 
> 
> non_empty_sets = [set(l) for l in (list_a, list_b, ..) if l]
> 
> result_set = set.intersection(*non_empty_sets)
> 
> return list(result_set)
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Fri Feb 06 2015 at 10:55:51 PM Vladimir Macek <ma... na sandbox.cz> wrote:
> Dovolte poznámku,
> 
> 
> 
> je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější pro
> 
> začátečníky, je takový imperativní. :-)
> 
> 
> 
> Doporučoval bych však zkusit pochopit eleganci toho druhého, který je IMO
> 
> přístupnější pro zkušené a otevírá trochu jiný svět uvažování.
> 
> 
> 
> Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat generátor),
> 
> což jistě Honza ví.
> 
> 
> 
> Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat po
> 
> typu OrderedSet (http://code.activestate.com/recipes/576694/).
> 
> 
> 
> Vl.
> 
> 
> 
> On 6.2.2015 20:50, Honza Král wrote:
> 
> > tohle je kratka odpoved:
> 
> >
> 
> > import operator
> 
> > reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))
> 
> >
> 
> > ale asi ne nejlepsi (neni prilis citelna)
> 
> >
> 
> >
> 
> > doporucil bych spis neco jako:
> 
> >
> 
> > sets = [set(l) for l in (list_a, list_b, ..) if l]
> 
> >
> 
> > result =lists.pop()
> 
> >
> 
> > for s in sets:
> 
> >     result &= s
> 
> > list_vysledny = list(result)
> 
> >
> 
> >
> 
> > Honza Král
> 
> > E-Mail: honza... na gmail.com
> 
> > Phone:  +420 606 678585
> 
> >
> 
> >
> 
> > 2015-02-06 20:10 GMT+01:00 Marcus Scalpere <marcus.... na gmail.com>:
> 
> >> Pěkný večer vinšuji,
> 
> >> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné (to bych ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud jsou některé hodnoty ve VŠECH, tak je uložit.
> 
> >> Něco jako:
> 
> >> list_a = []
> 
> >> list_b = [x, y, z]
> 
> >> list_c = [x, y]
> 
> >> .
> 
> >> .
> 
> >> .
> 
> >> list_vysledny = [x, y]
> 
> >>
> 
> >> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte
> 
> 
> 
> _______________________________________________
> 
> Python mailing list
> 
> pyt... na py.cz
> 
> http://www.py.cz/mailman/listinfo/python
> 
> 
> 
> Visit: http://www.py.cz



Další informace o konferenci Python