我需要按降序排序第一项的元组列表,然后按升序排序第二项.
为此,我实现了以下功能,但我认为它可能更快.
>>> compare = lambda a, b: -cmp(b[1], a[1]) if b[0] == a[0] else cmp(b[0], a[0])
>>> sorted([(0, 2), (0, 1), (1, 0), (1, 2)], cmp=compare)
[(1, 0), (1, 2), (0, 1), (0, 2)]
Run Code Online (Sandbox Code Playgroud)
有可能对其进行优化吗?查看与内置函数的比较:
>>> timeit.Timer(stmt='sorted([(int(random.getrandbits(4)),int(random.getrandbits(4))) for x in xrange(10)], cmp=compare)', setup='import random; compare=compare = lambda a, b: -cmp(b[1], a[1]) if b[0] == a[0] else cmp(b[0], a[0])').timeit(100000)
4.0584850867917339
>>> timeit.Timer(stmt='sorted([(int(random.getrandbits(4)),int(random.getrandbits(4))) for x in xrange(10)])', setup='import random').timeit(100000)
2.6582965153393161
Run Code Online (Sandbox Code Playgroud) 我在2008年发现了一篇文章,讨论如何从MySQL调用Java代码.有很多警告和免责声明,因为这个过程涉及使用MySQL的实验分支.
对于我想到的项目,能够访问MySQL中的Java库非常有用,类似于Oracle的Java存储过程.此功能现在是否作为MySQL的标准功能存在?如果没有,哪些开源RDBMS支持类似于Oracle的Java存储过程的东西?
我最近阅读(并且遗憾地忘记了在哪里),编写operator =的最佳方法是这样的:
foo &operator=(foo other)
{
swap(*this, other);
return *this;
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
foo &operator=(const foo &other)
{
foo copy(other);
swap(*this, copy);
return *this;
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是,如果使用rvalue调用operator =,则第一个版本可以优化复制的构造.因此,当使用rvalue调用时,第一个版本更快,当使用左值调用时,这两个版本是等效的.
我很好奇其他人对此的看法?由于缺乏明确性,人们会避免使用第一个版本吗?我是否正确,第一个版本可以更好,永远不会更糟?
我想知道如何通过项目解析JSON提要(例如,每个项目的url/title/description).我看过doc/api,但它没有帮助我.
这是我到目前为止所得到的
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class ImportSources extends Job {
public void doJob() throws IOException {
String json = stringOfUrl("http://feed.test/all.json");
JsonObject jobj = new Gson().fromJson(json, JsonObject.class);
Logger.info(jobj.get("responseData").toString());
}
public static String stringOfUrl(String addr) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
URL url = new URL(addr);
IOUtils.copy(url.openStream(), output);
return output.toString();
}
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个根层,以及许多图像是rootLayer的子图层.我想将rootLayer的所有子图层压缩成一个图层/图像,没有任何子图层.我想我应该通过在核心图形上下文中绘制所有子图层来做到这一点,但我不知道该怎么做.
我希望你能理解我,对不起我的英语.
当我编程的时候,我经常发现自己编写的函数 - 应该 - (适当的英语)包含撇号(太糟糕的C开始每个人都认为撇号是一个合适的分隔符).例如:get_user's_group() -> get_users_group().你们怎么处理这种强迫性的英语模糊英语?只是忽略撇号?创建一个不同的措辞?
目前,我的Google App Engine上有一个用Google的webapp框架编写的网站.我想知道的是将我的应用程序转换为使用django运行有什么好处?还有什么缺点?你们是如何编写GAE应用程序的?你使用过webapp或django吗?或者你是一个完全不同的路线并使用Java api?
谢谢
我有一个关于form_for和嵌套资源的两部分问题.假设我正在编写一个博客引擎,我想将评论与文章联系起来.我已经定义了一个嵌套资源,如下所示:
map.resources :articles do |articles|
articles.resources :comments
end
Run Code Online (Sandbox Code Playgroud)
评论表单位于文章的show.html.erb视图中,位于文章本身下方,例如:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误,"为nil调用id,这会错误等等".我也试过了
<% form_for @article, @comment do |f| %>
Run Code Online (Sandbox Code Playgroud)
哪个呈现正确但将f.text_area与文章的"文本"字段而不是注释相关联,并在该文本区域中显示了article.text属性的html.所以我似乎也有这个错误.我想要的是一个表单,其'submit'将在CommentsController上调用create action,在params中有一个article_id,例如对/ articles/1/comments的post请求.
我的问题的第二部分是,开始创建评论实例的最佳方法是什么?我正在ArticlesController的show动作中创建一个@comment,因此一个注释对象将在form_for帮助器的范围内.然后在CommentsController的create动作中,我使用从form_for传入的参数创建新的@comment.
谢谢!
使用可变长度数组有一些开销吗?可以在运行时通过命令行参数传递数组的大小吗?与自动和动态分配数组相比,为什么会引入它?