python-syntax.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 09 Oct 2017 10:49:36 +0300
changeset 2188 e95731eef030
parent 1929 3ce74b5f43c9
permissions -rw-r--r--
Fixed: NameError: name 'locale_encoding' is not defined File /bin/rst2html.py, line 17, in <module> from docutils.core import publish_cmdline, default_description File /usr/lib/python2.7/site-packages/docutils/core.py, line 20, in <module> from docutils import frontend, io, utils, readers, writers File /usr/lib/python2.7/site-packages/docutils/frontend.py, line 41, in <module> import docutils.utils File /usr/lib/python2.7/site-packages/docutils/utils/__init__.py, line 20, in <module> import docutils.io File /usr/lib/python2.7/site-packages/docutils/io.py, line 18, in <module> from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput File /usr/lib/python2.7/site-packages/docutils/utils/error_reporting.py, line 60, in <module> codecs.lookup(locale_encoding or '') # None -> '' NameError: name 'locale_encoding' is not defined


===============
 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.