2014-06-15 62 views
0

我們來舉個例子吧。我有這樣一個普通的功能:range()與'禁止'值?

def function(x): 
    for b in range(0, 5): 
     print(b) 

我想有x作爲例外的範圍;這樣一來,它會做這樣的事情:

def function(x): 
    for b in range(0, x): 
     print(b) 
    for b in range(x+1, 5): 
     print(b) 

但如果我想要做的不僅僅是一個簡單的print()時間越長,就會延長我的功能很多。有沒有解決方案呢?

回答

3

跳過x內循環:

for b in range(0, 5): 
    if b == x: 
     continue # skip to next iteration 
    print(b) 
+1

感謝您的快速回答。 – Desura

+0

@ user3685355如果這回答了您的問題/解決了您的問題,請不要忘記接受答案,方法是單擊答案旁邊的複選標記。這就是SO的「謝謝」機制:) – Levon

3

兩個子範圍可能是"chain版」在一起:

from itertools import chain 

def function(x): 
    for b in chain(range(0, x), range(x+1, 5)): 
     print(b) 

或者你也可以使用一個generator expression

def function(x): 
    for b in (v for v in range(0, 5) if v != x): 
     print(b) 

後者可以很容易地推廣到支持e包含多個值:

def function(*x): 
    for b in (v for v in range(0, 5) if v not in set(x)): 
     print(b) 

function(3)  # -> 0 1 2 4 
function(1, 3) # -> 0 2 4