我有一个生成器函数,如下所示:
def mygenerator():
next_value = compute_first_value() # Costly operation
while next_value != terminating_value:
yield next_value
next_value = compute_next_value()
Run Code Online (Sandbox Code Playgroud)
我希望初始化步骤(在while循环之前)在调用函数时立即运行,而不是仅在首次使用生成器时运行.有什么好办法呢?
我想这样做,因为生成器将在一个单独的线程(或进程,或任何多处理使用)中运行,我将不会在短时间内使用返回,并且初始化有点昂贵,所以我希望它我正准备使用这些值时进行初始化.
我编写了一个python脚本来使用gstreamer(pygst和gst模块)来计算replaygain标签,并且它与各种gobject错误不一致.我发现你可以通过在脚本顶部放置以下样板来解决这个问题:
import gobject
gobject.threads_init()
Run Code Online (Sandbox Code Playgroud)
我试了一下,它运作了.任何人都可以解释为什么这些行是必要的,为什么pygst本身不这样做?
在R中,我想知道我可以用特定的类(特别是BioConductor中的"biomaRt"包中的"Mart"类)做什么.我想看看为这个类定义的所有方法.有没有办法做到这一点?
注意:该methods功能不能满足我的要求.该函数列出了为其定义特定方法的所有类,而不是为类定义的所有方法.
我正在使用R中的一个大整数向量(大约1000万个整数),我需要从这个向量中找到每个不同的整数对,它们相差500或更少,并得出它们之间差异的直方图(即对于每对,第二个减去第一个).
这是完全未实现的代码,可以非常缓慢地执行我想要的操作:
# Generate some random example data
V <- round(rnorm(100) * 1000)
# Prepare the histogram
my.hist <- rep(0, 500)
names(my.hist) <- as.character(seq(1,500))
for (x1 in V) {
for (x2 in V) {
difference = x2 - x1
if (difference > 0 && difference <= 500) {
my.hist[difference] = my.hist[difference] + 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
(假设每个整数都是唯一的,因此该difference > 0位是正确的.这是允许的,因为我实际上并不关心差异为零的任何情况.)
这是一些矢量化内循环的代码:
my.hist2 <- rep(0, 500)
names(my.hist2) <- as.character(seq(1,500))
for (x1 in V) {
differences <- V[V > x1 & …Run Code Online (Sandbox Code Playgroud) 我维护了一个相当好用的emacs包(ido-ubiquitous),在下一个版本中,我打算放弃对Emacs 23及以下版本的支持.使用Emacs 23及以下版本的用户将能够继续使用我当前版本的软件包.
但是,我不希望让Emacs 23用户通过ELPA或git或其他东西升级,最终得到与他们的emacs不兼容的新版本.是否有一种普遍接受的方式来优雅地处理这个问题?我有没有选择将新版本重命名为"ido-ubiquitous-ng"或其他什么?
假设我有一个元素,我有一个谓词(函数)列表.我想将这些谓词中的每一个应用于单个元素,并获得相应的返回值列表.我知道这map和朋友可以对每个参数列表应用单个函数,但是有没有简洁的语法将许多函数应用于单个参数?
我当然能做到
(mapcar (lambda (pred) (funcall pred SINGLE-ELEMENT)) LIST-OF-PREDICATES)
Run Code Online (Sandbox Code Playgroud)
但如果有一个功能像以下那样会很好:
(test-predicates-against-element LIST-OF-PREDICATES SINGLE-ELEMENT)
Run Code Online (Sandbox Code Playgroud)
显然我可以defun做到,但我想知道是否有一种可接受的方法来做到这一点.
我刚刚使用setuptools进行打包,似乎安装python脚本和一个模块的推荐方法是指定一个调用函数名称的脚本名称,如下所示:
setup(
# ...
entry_points = {
"console_scripts": [
"script_name": "project.main:main",
],
}
)
Run Code Online (Sandbox Code Playgroud)
这显然排除了制作python模块可执行文件的标准方法,这是(我上次检查,不久之前)使用的if __name__ == "__main__": do_stuff().setuptools是否支持这种风格,还是应该切换到定义主函数并在entry_points中指定它?
在Emacs中,可以通过在文件末尾的局部变量部分中放置类似下面的内容来设置文件以在打开任何代码时(在提示用户之后)eval任意代码:
;; Local Variables:
;; eval: (message "This is evaluated when the file is opened in emacs.")
;; End:
Run Code Online (Sandbox Code Playgroud)
Emacs还具有将变量放入调用的文件中的功能,并将.dir-locals.el这些变量应用于目录中的任何文件.但是,此文件似乎不支持任意代码的评估.有没有办法在目录级别执行此操作?
我试图使用Emacs TRAMP通过ssh访问未提供的服务器上的文件/bin/sh,因此当我尝试连接时出现以下错误:
env: can't execute '/bin/sh': No such file or directory
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉TRAMP远程shell在哪个服务器?("服务器"是一个系留Android手机,所以请进入/system/bin/sh.)
我在R(特定limma::plotMDS)中使用了一个函数,它生成一个绘图并返回一个有用的值.我想获得返回值而不生成绘图.是否有一种简单的方法来调用函数但是抑制它创建的图?