例如,如果你有n个相同长度的bool列表,那么elementwise boolean AND应该返回另一个列表,该列表的长度在所有输入列表都为True的位置为True,其他地方为False.
它很容易编写,我只是希望使用内置(如果存在)(为了标准化/可读性).
这是元素AND的实现:
def eAnd(*args):
return [all(tuple) for tuple in zip(*args)]
Run Code Online (Sandbox Code Playgroud)
示例用法:
>>> eAnd([True, False, True, False, True], [True, True, False, False, True], [True, True, False, False, True])
[True, False, False, False, True]
Run Code Online (Sandbox Code Playgroud) python list built-in boolean-operations elementwise-operations
我正在考虑设计一种编程语言,我希望它以与CPython或Perl大致相同的速度启动.为了在我的语言中做出正确的设计选择以达到这个要求,我正在研究现有的动态语言,看看他们的设计选择如何影响他们的启动时间.许多基于JVM或CLR的语言实现比CPython或Perl具有更长的启动时间.这表明在JVM和/或CLR的设计中做出了设计选择,这导致了这种情况.那是什么选择,为什么这样做?
这是一个由三部分组成的问题:
请注意,其他SO问题已经处理" 为什么JVM启动缓慢? "以及各种JVM语言启动速度慢的原因.这个问题与那个问题截然不同,因为这个问题与设计权衡有关; 是为了换取那么长的启动时间而获得的收益?
其他SO问题询问用户如何加速各种JVM语言(答案往往是有一些预加载JVM的守护进程),但这不是我在这里要求的; 我问你如何设计一种允许快速启动(没有预加载)的语言(和/或虚拟机),以及为了换取这种情况你会失去什么.
我在我的GNU/Linux机器上的非正式Hello World测试中对CPython和Perl进行了基准测试,发现它们的启动时间不到0.05秒.在这篇文章的其余部分,我会说"快速"意味着"启动时间不会比CPython或Perl更长",而"慢"意味着其他情况.
这是很容易找到的意见的是JVM本身和/或Java是慢启动(3,4,5,6),以及混凝土1秒或更长的数量级上的数字(7,27)和基准(8).但是2个Hello世界JVM基准开始仅为0.04秒(在GNU/Linux)(9,10).
Clojure的有大约0.6-1秒的启动时间(1,2); 这比我0.05秒的目标慢约20倍.ClojureCLR甚至更慢(1).Clojure启动时基准和讨论可以在博客文章Clojure bootstrapping(Kariniemi)中找到,为什么Clojure缓慢(Trojer).
一个创业时间的基准测试人员说,Clojure和JRuby "明显慢于其他所有人"(25); 这些也是仅有的两种基于JVM的动态语言.另一个(非常古老的)基准测试表明,Jython的启动速度也很慢(26).我们在这个问题上专注于动态语言,但是Scala的速度也不是很快(1).有一个名为Kawa的JVM Scheme (23).据报道,Kawa的启动时间约为0.4(24),比Clojure快,但仍比我的目标高出一个数量级.
两个(1 …
您更喜欢哪一个?为什么?各自的优点和缺点是什么?在哪种情况下,每个都比其他情况更胜一筹?
我对midje与clojure.test特别感兴趣,但也可以自由地提出其他Clojure测试框架.
另请参阅Clojure的最佳单元测试框架?(这个问题的答案没有详细说明"为什么").
我正在从文件配置我的Python日志记录(请参阅http://www.python.org/doc//current/library/logging.html#configuration-file-format).
从该页面上的示例中,我在配置文件中有一个格式化程序,如下所示:
[formatter_form01]
format=F1 %(asctime)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter
Run Code Online (Sandbox Code Playgroud)
如何在指定格式化程序的"格式"字符串中添加换行符?既不工作\n也不\\n工作(例如format=F1\n%(asctime)s %(levelname)s %(message)s不起作用).谢谢
寻找具有分布式团队的中型Web应用程序打开项目的问题跟踪器.我们计划在自己的服务器上运行它.新用户必须非常容易提交新问题,并且必须与其他软件很好地集成.
我们的主要要求,按重要性降序排列:
其他理想标准,按重要性降序排列:
当我说"顺从"时,我的意思是我们愿意在必要时自己编写问题跟踪器的扩展代码,但问题跟踪器的架构应该适合这种扩展.
问题跟踪器还包括支持服务台或项目管理功能,只要我们可以选择集成外部软件而不是使用附带的东西.我们不需要另一个维基(我们已经有一个我们喜欢的维基).
根据谷歌搜索(见评论),最流行的开源问题跟踪器是trac,bugzilla,mantis,RT(可能还有Launchpad).我还包括Redmine,因为我从未见过最近这些问题跟踪器和Redmine之间的比较,其中某人对Redmine有些不好说,而且在民意调查中Redmine有时会击败其他人.随意建议其他人(请记住其中一个标准是"相对较大的社区").
毫无疑问,那里有多个好问题跟踪器; 上面列出的许多声称可以扩展并与其他软件集成.最有帮助的是使用不止一个人的问题跟踪器之间的直接比较.
这些在可扩展性,可整合性和可塑性方面如何相互比较?
如果您使用过多个这样的产品,您会推荐哪些产品,以及您使用过哪些产品?
哪些已经与大量的auth系统/支持台系统/等集成?
解释为什么特定流行的开源问题跟踪器(特别是上面列出的那个)不适合我们的情况的评论是非常受欢迎的; 这样可以节省我的时间.
谢谢!
在HTTP URL路径中使用各种标点符号是不明智的吗?我正在为API定义资源URL.这些资源URL必须由各种客户端和中间件访问,存储和传输,因此重要的是它们不包含可能导致问题的字符.
RFC 3986,第2.2节."保留字符"将以下字符指定为子字符:!$&'()*+ ,; =
在HTTP方案中的URL路径中是否有任何非法任意使用?
即使它们根据标准是合法的,由于不兼容的软件,这些中的任何一个很有可能导致实际的互操作性问题吗?
在广泛部署的API中是否存在您之前使用过的任何特定子delim(这可以证明您使用的是安全的)?
动机是我们需要划分没有分层语义的键值对.我们正在考虑这样做:http://doriantaylor.com/policy/http-url-path-parameter-syntax.但是,如果这可能是一个问题,我们将只做http://example.com/key1/value1/key2/value2
谢谢
我所知道的是vhector和clj-hector.积极维护的图书馆更受欢迎.谢谢.
我想在 IPython 中创建一个钩子,当我执行 Cntl-D、%Exit、%Quit 或 %exit 和 %quit 并确认时运行。
动机是我希望有一个线程在后台无限期地在 IPython 中运行,直到我按 Cntl-D 退出,然后我想告诉该线程退出。我想我将使用钩子向我的后台线程发送信号。
我想一种方法是包装 IPython::iplib::InteractiveShell::exit。这可能吗?有没有更好的方法来做我想做的事情?谢谢