python-syntax.rst
changeset 1929 3ce74b5f43c9
equal deleted inserted replaced
1928:eb1e2557ebf7 1929:3ce74b5f43c9
       
     1 
       
     2 ===============
       
     3  Python syntax
       
     4 ===============
       
     5 .. contents::
       
     6    :local:
       
     7 
       
     8 List comprehension
       
     9 ==================
       
    10 
       
    11 List comprehension produce complete list with compact syntax::
       
    12 
       
    13   [x**2 for x in xrange(1,10)]
       
    14   [x+y for x in xrange(1,10) for y in xrange(1,10)]
       
    15   [x-y for x in xrange(1,10) for y in xrange(1,10) if x>y]
       
    16 
       
    17   xlist = [x**2 for x in xrange(1,10)]
       
    18   print xlist[0], xlist[2], xlist[-1]
       
    19   print xlist[2:4]
       
    20   print sum(xlist), sum(xlist)
       
    21 
       
    22 Generator expression
       
    23 ====================
       
    24 
       
    25 Generator expression produce generator with compact syntax::
       
    26 
       
    27   (x**2 for x in xrange(1,10))
       
    28   (x+y for x in xrange(1,10) for y in xrange(1,10))
       
    29 
       
    30   print [x for x in (x**2 for x in xrange(1,10))]
       
    31 
       
    32   xgen = (x**2 for x in xrange(1,10))
       
    33   try:
       
    34       xgen[0]
       
    35   except TypeError:
       
    36       print "'generator' object has no attribute '__getitem__'"
       
    37   print sum(xlist), sum(xlist)
       
    38 
       
    39 Parentheses is required only if expression is ambiguous.
       
    40