code: def degree_iter(self, nbunch=None, t=None):
          
          if nbunch is None:
              nodes_nbrs = self._adj.items()
          else:
              nodes_nbrs = ((n, self._adj[n]) for n in self.nbunch_iter(nbunch))
  
          if t is None:
              for n, nbrs in nodes_nbrs:
                  deg = len(self._adj[n])
                  yield (n, deg)
          else:
              for n, nbrs in nodes_nbrs:
                  edges_t = len([v for v in nbrs.keys() if self.__presence_test(n, v, t)])
                  if edges_t > 0:
                      yield (n, edges_t)
                  else:
                      yield (n, 0)
docs: Return an iterator for (node, degree) at time t.
  
          The node degree is the number of edges adjacent to the node in a given timeframe.
  
          Parameters
          ----------
          nbunch : iterable container, optional (default=all nodes)
              A container of nodes.  The container will be iterated
              through once.
  
          t : snapshot id (default=None)
              If None will be returned an iterator over the degree of nodes on the flattened graph.
  
  
          Returns
          -------
          nd_iter : an iterator
              The iterator returns two-tuples of (node, degree).
  
          See Also
          --------
          degree
  
          Examples
          --------
          >>> G = dn.DynGraph()
          >>> G.add_path([0,1,2,3], t=0)
          >>> list(G.degree_iter(0, t=0))
          [(0, 1)]
          >>> list(G.degree_iter([0,1], t=0))
          [(0, 1), (1, 2)]