title: How to iterate a sequence from both ends?
body: <p>I want to iterate (part of) a Python sequence "from both ends" (to the middle (of that part), here).<br>
  In C/C++/Java, I might try</p>
  
  <pre><code>int start = 2, beyond = 7;
  for (int forward = start, back = beyond ; forward &lt;= --back ; forward++)
      printf("%d %d\n", forward, back);
  </code></pre>
  
  <p>I can't seem to decide which of the following variants I dislike best:</p>
  
  <pre><code>seq = tuple(chr(c) for c in range(ord('a'), ord('z')+1))
  start, beyond = 2, 7
  
  print("subtract")
  for forward in range(start, beyond):
      back = start + beyond - 1 - forward
      if (back &lt; forward):
          break
      print(seq[forward], seq[back])
  #    if (back &lt;= forward): XXX ERROR, as YvesgereY pointed out
  #        break
  print("reversed")
  for forward, back in zip(range(start, beyond),
                           reversed(range(start, beyond))):
      if (back &lt; forward):
          break
      print(seq[forward], seq[back])
  print("step -1")
  for forward, back in zip(range(start, beyond), range(beyond-1, start-1, -1)):
      if (back &lt; forward):
          break
      print(seq[forward], seq[back])
  print("naked code")
  forward, back = start, beyond-1 # thanks again, YvesgereY
  while (forward &lt;= back):
      print(seq[forward], seq[back])
      forward += 1
      back -= 1
  </code></pre>
  
  <p>Is there a pleasing/sane/idiomatic way to handle this?</p>