class_docstr: Generate a list comprehension.
  
  Explanation
  ===========
  
  If there is a symbolic dimension, for example, say [i for i in range(1, N)] where
  N is a Symbol, then the expression will not be expanded to an array. Otherwise,
  calling the doit() function will launch the expansion.
  
  Examples
  ========
  
  >>> from sympy.tensor.array import ArrayComprehension
  >>> from sympy import symbols
  >>> i, j, k = symbols('i j k')
  >>> a = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
  >>> a
  ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
  >>> a.doit()
  [[11, 12, 13], [21, 22, 23], [31, 32, 33], [41, 42, 43]]
  >>> b = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k))
  >>> b.doit()
  ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k))
class_docstr_tok: ["Generate","a","list","comprehension",".","Explanation","===========","If","there","is","a","symbolic","dimension",",","for","example",",","say","[","i","for","i","in","range","(","1",",","N",")","]","where","N","is","a","Symbol",",","then","the","expression","will","not","be","expanded","to","an","array",".","Otherwise",",","calling","the","doit","(",")","function","will","launch","the","expansion",".","Examples","========",">",">",">","from","sympy.tensor.array","import","ArrayComprehension",">",">",">","from","sympy","import","symbols",">",">",">","i",",","j",",","k","=","symbols","(","'","i","j","k","'",")",">",">",">","a","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","3",")",")",">",">",">","a","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","3",")",")",">",">",">","a.doit","(",")","[","[","11",",","12",",","13","]",",","[","21",",","22",",","23","]",",","[","31",",","32",",","33","]",",","[","41",",","42",",","43","]","]",">",">",">","b","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","k",")",")",">",">",">","b.doit","(",")","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","k",")",")"]
docstr: The shape of the expanded array, which may have symbols.
  
  Note
  ====
  
  Both the lower and the upper bounds are included while
  calculating the shape.
  
  Examples
  ========
  
  >>> from sympy.tensor.array import ArrayComprehension
  >>> from sympy import symbols
  >>> i, j, k = symbols('i j k')
  >>> a = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
  >>> a.shape
  (4, 3)
  >>> b = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k+3))
  >>> b.shape
  (4, k + 3)
docstr_tok: ["The","shape","of","the","expanded","array",",","which","may","have","symbols",".","Note","====","Both","the","lower","and","the","upper","bounds","are","included","while","calculating","the","shape",".","Examples","========",">",">",">","from","sympy.tensor.array","import","ArrayComprehension",">",">",">","from","sympy","import","symbols",">",">",">","i",",","j",",","k","=","symbols","(","'","i","j","k","'",")",">",">",">","a","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","3",")",")",">",">",">","a.shape","(","4",",","3",")",">",">",">","b","=","ArrayComprehension","(","10","*","i","+","j",",","(","i",",","1",",","4",")",",","(","j",",","1",",","k+3",")",")",">",">",">","b.shape","(","4",",","k","+","3",")"]
code: def shape(self):
      """
      The shape of the expanded array, which may have symbols.
  
      Note
      ====
  
      Both the lower and the upper bounds are included while
      calculating the shape.
  
      Examples
      ========
  
      >>> from sympy.tensor.array import ArrayComprehension
      >>> from sympy import symbols
      >>> i, j, k = symbols('i j k')
      >>> a = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, 3))
      >>> a.shape
      (4, 3)
      >>> b = ArrayComprehension(10*i + j, (i, 1, 4), (j, 1, k+3))
      >>> b.shape
      (4, k + 3)
      """
      return self._shape
  
imports: import functools, itertools
  from sympy.core.sympify import _sympify, sympify
  from sympy.core.expr import Expr
  from sympy.core import Basic, Tuple
  from sympy.tensor.array import ImmutableDenseNDimArray
  from sympy.core.symbol import Symbol
  from sympy.core.numbers import Integer
label_desc: Use image node_id 7 for calling the ArrayComprehension obj's underlying member method code with example usage: obj.shape() and returns: self