In the future, I'd like to suggest that you choose a genuine subject
line when you post.  It makes people more inclined to read your messages.


Michael Wilson wrote:
>
> My thought if there's not already an elegant solution in Python is to
> create a flag 'r' before ranges. So, the example here would become
> [1,3,'r',5,10,18,78]. Then I just do a  > < query to find a match. How
> does that sound?

I can think of several approaches.  For a range, you could add a
two-tuple instead of an integer:
    nums = [1, 3, (5,10), 18, 78]
You can tell the difference at runtime:
    for item in nums:
        if type(item) == tuple:
            numHit = (newNum >= item[0]) and (newNum <= item[1])
        else:
            numHit = newNum == item

To eliminate the special case, you could embed ALL of the numbers as
ranges of size one:
    nums = [ (1,1), (3,3), (5,10), (18,18), (78,78) ]

Or, unless you plan to allow numbers in the millions, just add the whole
range to the list individually:
    nums = [1, 3]
    nums.extend( range(5,10+1) )
    nums.append( 18 )
    nums.append( 78 )


> for i in range(len(li[x][3])):

Almost always, when you write a for loop with range(len(xxx)), you can
do the same thing without them:
    for i in li[x][3]:
If you really do need the index, you can do:
    for index, i in enumerate(li[x][3]):

-- 
Tim Roberts, t...@probo.com
Providenza & Boekelheide, Inc.

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to