Python's
in construct, when used with an
if statement, lets you loop through all the members of a collection (such as a list or a tuple) and see if there's a member in the list that's equal to the pattern - thus
val = 17
if val in [1,4,5,7,12,14,17,20,34]: print "yes"
will print out "Yes". For looking for an element in a list, this is both quick coding and very efficient at run time, as the check is being done at a 'C level' - in other words, internally to Python without a constant series of reference back to the byte code. However - it IS still a loop.
Consider the following code which checks whether an integer entered by the user in between 0 and 30:
value = int(raw_input("Give me a number between 0 (inclusive) and 30 (exclusive): "))
if value in range(0,30): print "It is in range (1)"
if value < 30 and value >= 0: print "It is in range (2)"
if value in xrange(0,30): print "It is in range (3)"
All three work, and work well. BUT ... if the range we were checking was between 0 and 3 million, it would be a different story. The first test would create a list of 3 million integers internally and would then check our value against each of them - a real memory hog, and likely to break if the number was an order of magnitude higher that 3 million. The third test uses a generator function; not a memory hog, but never the less an internal loop looking at each number from 0 to 2,999,999 in turn and so really slow. The second test remains fast - just two checks to be made, no internal loop, no matter how high the top limit integer is!
(written 2006-08-16)
Associated topics are indexed under
Y103 - Python - Conditionals and Loops [3558] Python or Lua - which should I use / learn? - (2011-12-21)
[3439] Python for loops - applying a temporary second name to the same object - (2011-09-14)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3083] Python - fresh examples from recent courses - (2010-12-11)
[2899] Groupsave tickets - 3 or 4 train tickets for the price of 2 - (2010-08-02)
[2778] Learning to program in Python 2 ... and / or in Python 3 - (2010-05-24)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1661] Equality, sameness and identity - Python - (2008-05-31)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1201] No switch in Python - (2007-05-23)
[909] Python is like a narrowboat - (2006-10-30)
[788] New - Conditional expressions in Python 2.5 - (2006-07-01)
[668] Python - block insets help with documentation - (2006-04-04)
[657] The ternary operator in Python - (2006-03-25)
[353] Wimbledon Neck - (2005-06-20)
[299] What - no switch or case statement? - (2005-05-03)
Some other Articles
Reporting on the 10 largest files or 10 top scoresTalking about other training companies.Tomcat - Shutdown portBuild on what you already have with OOPython - when to use the in operatorPython makes University ChallengeOld Wardour CastleDisplaying data at 5 items per line on a web pageComparison of Object Oriented Philosophy - Python, Java, C++, PerlButterflies in a Wiltshire garden