python-syntax.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 16 Sep 2019 22:13:19 +0300
changeset 2376 20b65f046002
parent 1929 3ce74b5f43c9
permissions -rw-r--r--
Revoke privileges and drop role.


===============
 Python syntax
===============
.. contents::
   :local:

List comprehension
==================

List comprehension produce complete list with compact syntax::

  [x**2 for x in xrange(1,10)]
  [x+y for x in xrange(1,10) for y in xrange(1,10)]
  [x-y for x in xrange(1,10) for y in xrange(1,10) if x>y]

  xlist = [x**2 for x in xrange(1,10)]
  print xlist[0], xlist[2], xlist[-1]
  print xlist[2:4]
  print sum(xlist), sum(xlist)

Generator expression
====================

Generator expression produce generator with compact syntax::

  (x**2 for x in xrange(1,10))
  (x+y for x in xrange(1,10) for y in xrange(1,10))

  print [x for x in (x**2 for x in xrange(1,10))]

  xgen = (x**2 for x in xrange(1,10))
  try:
      xgen[0]
  except TypeError:
      print "'generator' object has no attribute '__getitem__'"
  print sum(xlist), sum(xlist)

Parentheses is required only if expression is ambiguous.