title: Is there an equivalent to Python's enumerate() for .NET IEnumerable
body: <p>I could not find a related question.</p>
  
  <p>In <code>python</code> you can easily loop through a sequence (<code>list</code>, <code>generator</code> etc) and collect the index of the iteration at the same time thanks to <code>enumerate(seq)</code> like this :</p>
  
  <pre class="lang-python prettyprint-override"><code>&gt;&gt;&gt; for (i,item) in enumerate(["toto","titi","tutu"]):
  ...     print i, item
  ...
  0 toto
  1 titi
  2 tutu
  </code></pre>
  
  <p>Is there something similar for IEnumerable, that would, for instance, transform a <code>IEnumerable&lt;T&gt;</code> in a <code>IEnumerable&lt;Tuple&lt;Int32,T&gt;&gt;</code> ?</p>
  
  <p>(I know it would be easily done thanks to the correct function in <code>Select()</code> .. but if it exists, I'd rather use it :) )</p>
  
  <p><strong>UPDATE</strong>
  FYI, I am curious about this kind of possibility to be able to do something like : "give me the index of the last item that fulfils this condition", which would then be accomplished through :</p>
  
  <pre><code>myEnumeration.First(t =&gt; some condition on t.Item2 ... ).Item1;
  </code></pre>