code: def _block_lower_triangular_dense(expected_shape, blocks):
      """Convert a list of blocks into a dense blockwise lower-triangular matrix."""
      rows = []
      num_cols = 0
      for row_blocks in blocks:
          # Get the batch shape for the block.
          batch_row_shape = array_ops.shape(row_blocks[0])[:-1]
  
          num_cols += array_ops.shape(row_blocks[-1])[-1]
          zeros_to_pad_after_shape = array_ops.concat(
              [batch_row_shape, [expected_shape[-2] - num_cols]],
              axis=-1,
          )
          zeros_to_pad_after = array_ops.zeros(
              zeros_to_pad_after_shape, dtype=row_blocks[-1].dtype
          )
  
          row_blocks.append(zeros_to_pad_after)
          rows.append(array_ops.concat(row_blocks, axis=-1))
  
      return array_ops.concat(rows, axis=-2)
  
imports: import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.eager import context
  from tensorflow.python.framework import config
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.ops.linalg import linalg
  from tensorflow.python.ops.linalg import linear_operator_block_lower_triangular
  from tensorflow.python.ops.linalg import linear_operator_test_util
  from tensorflow.python.ops.linalg import linear_operator_util
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling a global function with example usage: _block_lower_triangular_dense(expected_shape, blocks) and returns: array_ops