在Python列表推导式中打印(或执行语句)

5 投票
1 回答
1532 浏览
提问于 2025-04-17 23:55

我在想有没有办法在列表推导式里面打印东西(或者更一般地说,执行一些语句)。
为了让大家都明白,我们来看一下下面这个函数 f 里的列表推导式:

def g(x):
     return some_complicated_condition_function(x)

def f(list_of_numbers,n):
     return [i for i in range(n) if g(list_of_numbers[i]) > 0]

假设我在调用 f 的时候遇到了一些神秘的错误,我想通过捕捉这个错误来调试,像这样:

try: g(list_of_numbers[i])
except: 
    print (i,list_of_numbers[i]))
    raise Exception("Danger Will Robinson!")

有没有办法在不把我的列表推导式改写成传统的 for/while 循环的情况下做到这一点呢?

谢谢!
顺便说一下,也许这不是一个好的调试方式(我是学数学的,不是计算机专业),所以如果你有任何建议,请不要害羞。

1 个回答

2

哎呀,我在发帖后才意识到这个问题的答案!>:O

我只需要再写一个函数:

def h(i,list_of_numbers):
    try: g(list_of_numbers[i])
    except: 
        print (i,list_of_numbers[i]))
        raise Exception("Danger Will Robinson!")
return i

然后我就可以用列表推导式来处理:

[h(i) for i in range(n) if g(list_of_numbers[i]) > 0]

...我想这个方法应该可以用来执行我想要的任何语句。真是的,我本来很兴奋终于有东西可以在Stack Exchange上发帖的!

撰写回答