我想知道是否有任何方法可以在列表理解中打印(或者更一般地说,执行语句)。
所以我们都在同一页面上,考虑以下函数 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 循环?
谢谢!PS 也许这是一种可怕的调试方式(我是数学专业,而不是计算机科学专业),所以如果您有任何提示,请不要害羞。
注意:为了快速解释这一点,我将从 Spyder 工作的角度来讨论这一点。
如果在我的代码中调用 a 函数,我可以在调用它的位置旁边放置一个断点,然后当我的代码到达该点时,我可以单击“Step into function..”按钮来查看该函数内部发生了什么。
假设我处于某个任意断点,并且想要查看不在我的代码中的函数内部发生的情况。有什么方法可以通过 pdb 控制台调用此函数并“步入”所述函数调用吗?
这是我正在尝试做的事情:
ssh andy@<ip_address> "cat .bash_aliases; sayhello"
这是发生的事情:
alias sayhello="echo hello"
bash: sayhello: command not found
为了更具体地解决我的问题,我试图
"sudo etherwake -i eth0 <mac_address>"通过ssh 调用命令- 这在我的本地计算机上执行(我认为),给出sudo: unable to resolve host [blabla]错误.似乎任何非标准bash命令的命令都由我的本地机器解析.  
如果这就是发生的事情,我该如何解决它?如果没有,什么是如何解释呢?
我正在尝试用另一个音高替换乐谱中的一个音高(最终目标是产生和声部分)。
>>> from music21 import *
>>> score = converter.parse('test.mid')
>>> type(score)
<class 'music21.stream.Score'>
>>> p0 = score.parts[0].pitches[0]
>>> p0sharp = p0.transpose(1)
>>> print p0
A3
>>> print p0sharp
B-3
>>> score.replace(p0, p0sharp)
>>> print score.parts[0].pitches[0]
A3
我该怎么办?
更新:我在这里发布了我的“test.mid”文件。