# [python] Skip over a value in the range function in python

What is the pythonic way of looping through a range of numbers and skipping over one value? For example, the range is from 0 to 100 and I would like to skip 50.

Edit: Here's the code that I'm using

``````for i in range(0, len(list)):
x= listRow(list, i)
for j in range (#0 to len(list) not including x#)
...
``````

This question is related to `python` `loops` `for-loop` `range`

It depends on what you want to do. For example you could stick in some conditionals like this in your comprehensions:

``````# get the squares of each number from 1 to 9, excluding 2
myList = [i**2 for i in range(10) if i != 2]
print(myList)

# --> [0, 1, 9, 16, 25, 36, 49, 64, 81]
``````

It is time inefficient to compare each number, needlessly leading to a linear complexity. Having said that, this approach avoids any inequality checks:

``````import itertools

m, n = 5, 10
for i in itertools.chain(range(m), range(m + 1, n)):
print(i)  # skips m = 5
``````

As an aside, you woudn't want to use `(*range(m), *range(m + 1, n))` even though it works because it will expand the iterables into a tuple and this is memory inefficient.

Credit: comment by njzk2, answer by Locke

``````for i in range(0, 101):
if i != 50:
do sth
else:
pass
``````

In addition to the Python 2 approach here are the equivalents for Python 3:

``````# Create a range that does not contain 50
for i in [x for x in range(100) if x != 50]:
print(i)

# Create 2 ranges [0,49] and [51, 100]
from itertools import chain
concatenated = chain(range(50), range(51, 100))
for i in concatenated:
print(i)

# Create a iterator and skip 50
xr = iter(range(100))
for i in xr:
print(i)
if i == 49:
next(xr)

# Simply continue in the loop if the number is 50
for i in range(100):
if i == 50:
continue
print(i)
``````

Ranges are lists in Python 2 and iterators in Python 3.

what you could do, is put an if statement around everything inside the loop that you want kept away from the 50. e.g.

``````for i in range(0, len(list)):
if i != 50:
x= listRow(list, i)
for j in range (#0 to len(list) not including x#)
``````

``````for i in range(100):
if i == 50:
continue
dosomething
``````