Path: csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Paul Rubin Newsgroups: comp.lang.python Subject: Re: The Cost of Dynamism (was Re: Pyhon 2.x or 3.x, which is faster?) Date: Sun, 13 Mar 2016 16:25:43 -0700 Organization: A noiseless patient Spider Lines: 24 Message-ID: <87wpp6c64o.fsf@jester.gateway.pace.com> References: <56e44258$0$1598$c3e8da3$5496439d@news.astraweb.com> <8737rvxs89.fsf@elektro.pacujo.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="6f8cc70e6892455e89d230a40ec2704b"; logging-data="6461"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/s6JTks4H1ur1nnVdmWbyO" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:sax+Izz5aLrb3aorcmSMBmfqYys= sha1:uNeCWhKE8wLwfrS/wTX14sM4gqc= Xref: csiph.com comp.lang.python:104790 BartC writes: > def case(*args): > return any((arg == switch.value for arg in args)) def case(values): return switch.value in values > I used it in my benchmark to replace the if-else chain checking three > lots of ranges: > > switch(c) > if case(ord("A"),ord("B"),ord("C"),ord("D"),ord("E"),ord("F"), > ord("G"),ord("H"),ord("I"),ord("J"),ord("K"),ord("L"), > ord("M"),ord("N"),ord("O"),ord("P"),ord("Q"),ord("R"), > ord("S"),ord("T"),ord("U"),ord("V"),ord("W"),ord("X"), > ord("Y"),ord("Z")): > upper+=1 Use a set instead of a big tuple: uppers = { ord("A"), ord("B"), ... ord("Z") } ... if case(uppers): upper += 1