integer >= 1 == True and integer.0 == False is bad, bad, bad!!!

Paul Rubin no.email at nospam.invalid
Sun Jul 11 03:39:22 EDT 2010


rantingrick <rantingrick at gmail.com> writes:
> unspeakably ugly code.

I'd write the code differently to not do all those branches.
I like to use 1-elemnt lists as an option type, instead of using None,
so you can just concatenate them together to get the first non-empty
one. Untested code:
 array = [c1,c2,c3,c4,c5,c6,...]
 # return first element of iterable that matches condition, wrapped
 # as a 1-element list. If no match, return empty list.
 def xfind(condition, iterable):
 for x in iterable:
 if condition(x): return [x]
 return []
 while looping:
 cs = xfind(this_condition, array) + xfind(other_condition, array)
 # cs is now a list of either zero, one, or two matching elements
 if len(cs) == 1:
 r = cs[0]
 elif len(cs) = 2:
 r = <whichever is best>
 else:
 break
 best = array.pop(r)
 do_somthing_with(best)
Obviously you can golf the above in various ways.


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /