range()是否具有“禁止”值?

2024-04-23 14:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

让我们举个例子。我有这样一个普通的函数:

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()要长,它会扩展我的函数很多。有什么解决办法吗?你知道吗


Tags: 函数infordefrangefunction例子print
2条回答

这两个子范围可以"^{}合并在一起:

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)

后者可以很容易地概括为支持排除多个值:

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

跳过循环内的x

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

相关问题 更多 >