"Lawrence D'Oliveiro" <l...@geek-central.gen.new_zealand> wrote in message news:i8j0dg$lh...@lust.ihug.co.nz...
In message <i8i1h8$dc...@news.eternal-september.org>, BartC wrote:

x = ("One","Two","Three") [i-1]

While this works for i = 1,2,3, it goes funny for i=0,-1,-2, and generates
an error for the rest ...

x = {1 : "One", 2 : "Two", 3 : "Three"}.get(i, "None Of The Above")

Yes, I expected Python to come up with something (it always does).

However, as I mentioned, one problem here is having to evaluate all the items in the list before selecting one:

def fna():
       print "FNA CALLED"
       return "One"
def fnb():
       print "FNB CALLED"
       return "Two"
def fnc():
       print "FNC CALLED"
       return "Three"

i=16
x = {1 : fna(), 2 : fnb(), 3 : fnc()}.get(i, "None Of The Above")
print x

Other than efficiency concerns, sometimes you don't want the extra side-effects.

Probably there are workarounds here too, but I suspect the syntax won't be quite as pert as the Algol68-style example:

x = (i | "Zero", "One", "Two" | "None of the above")      # 0-based

--
bartc --
http://mail.python.org/mailman/listinfo/python-list

Reply via email to