2014-06-06 6 views
17

Was ist die pythonische Art, eine Reihe von Zahlen zu durchlaufen und einen Wert zu überspringen? Zum Beispiel ist der Bereich von 0 bis 100, und ich möchte 50.Überspringt einen Wert in der Bereichsfunktion in Python.

bearbeiten überspringen: Hier ist der Code, den ich

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

Die 'continue'-Anweisung mit einer bedingten? –

+0

Ich könnte das tun, aber gibt es eine Möglichkeit, es in der Struktur der Schleife selbst zu bekommen? – David

+0

Was machst du in der Schleife? –

Antwort

40

Sie folgende verwenden:

# 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 
+0

hinzugefügt Der dritte Vorschlag löst TypeError, weil Sie nicht explizit einen Iterator erstellt – aestrivex

+0

(1) erstellt zwei Listen, (2) verkettet zwei Listen, (3) funktioniert nicht, Xrange ist kein Iterator. (4) sollte xrange verwenden, um das Erstellen einer Liste zu vermeiden, und ist die bisher beste Lösung. – Daniel

+1

'xr = xrange (100) .__ iter __()' funktioniert –

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

Es hängt mit ab, was Sie wollen machen. Zum Beispiel könnten Sie einige conditionals wie dies in Ihrem Comprehensions Stick in:

# 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

, was Sie tun können, ist eine if-Anweisung um alles in der Schleife setzen dass Sie von der 50. z

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#) 
Verwandte Themen