web-dev-qa-db-fra.com

Ignorer une valeur dans la fonction range en python

Quel est le moyen utilisé par Pythonic pour parcourir une plage de nombres et sauter une valeur? Par exemple, la plage va de 0 à 100 et je voudrais sauter 50.

Edit: Voici le code que j'utilise

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

Vous pouvez utiliser n'importe lequel de ceux-ci:

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

# Create 2 ranges [0,49] and [51, 100] (Python 2)
for i in range(50) + range(51, 100):
    print i

# Create a iterator and skip 50
xr = iter(xrange(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
57
njzk2
for i in range(100):
    if i == 50:
        continue
    dosomething
1
Daniel

Cela dépend de ce que vous voulez faire. Par exemple, vous pourriez utiliser des conditions telles que celle-ci dans vos compréhensions:

# 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]
1

En plus de l’approche Python 2, voici les équivalents de 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)

Les plages sont des listes dans Python 2 et des itérateurs dans Python 3.

1
Locke