List comprehension vs generator expression.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Sun, 28 Feb 2016 14:50:39 +0200
changeset 1929 3ce74b5f43c9
parent 1928 eb1e2557ebf7
child 1930 830777b3bb5d
List comprehension vs generator expression.
python-syntax.rst
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-syntax.rst	Sun Feb 28 14:50:39 2016 +0200
@@ -0,0 +1,40 @@
+
+===============
+ 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.
+