最快的方法来检查列表中是否存在一个值

我正在寻找最快的方法来知道一个列表中是否存在一个值(一个有数百万个值的列表)以及它的索引是什么? 我知道列表中的所有值都是独特的,就像我的例子。 我尝试的第一种方法是(在我的真实代码中为3.8秒): a = [4,2,3,1,5,6] if a.count(7) == 1: b=a.index(7) "Do something with variable b" 我尝试的第二种方法是(快两倍:我的真实代码1.9秒): a = [4,2,3,1,5,6] try: b=a.index(7) except ValueError: "Do nothing" else: "Do something with variable b" 来自Stackoverflow用户的build议方法(在我的真实代码上2.74秒): a = [4,2,3,1,5,6] if 7 in a: a.index(7) 在我的实际代码中,第一个方法需要3.81秒,第二个方法需要1.88秒。 这是一个很好的改进,但是: 我是一个Python /脚本编程的初学者,我想知道是否有最快的方法来做同样的事情,并节省更多的处理时间? 我的应用程序更具体的说明: 在搅拌机的API中,可以访问粒子列表: particles = [1,2,3,4…etc.] 从那里,我可以访问它的位置: particles[x].location = [x,y,z] 而且我通过search每个粒子的位置来testing每个粒子是否存在邻居: […]

JSON.NET错误检测到types的自我引用循环

我尝试序列化从实体数据模型.edmx自动生成的POCO类,当我使用 JsonConvert.SerializeObject 我得到了以下错误: 错误发生System.data.entitytypes检测到的自回参考循环。 我如何解决这个问题?

使用jQuery和正则expression式validation电子邮件地址

我不太确定如何做到这一点。 我需要使用正则expression式来validation电子邮件地址,如下所示: [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[AZ]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum) 然后我需要在这样的jQuery函数中运行它: $j("#fld_emailaddress").live('change',function() { var emailaddress = $j("#fld_emailaddress").val(); // validation here? if(emailaddress){} // end validation $j.ajax({ type: "POST", url: "../ff-admin/ff-register/ff-user-check.php", data: "fld_emailaddress="+ emailaddress, success: function(msg) { if(msg == 'OK') { $j("#fld_username").attr('disabled',false); $j("#fld_password").attr('disabled',false); $j("#cmd_register_submit").attr('disabled',false); $j("#fld_emailaddress").removeClass('object_error'); // if necessary $j("#fld_emailaddress").addClass("object_ok"); $j('#email_ac').html('&nbsp;<img src="img/cool.png" align="absmiddle"> <font color="Green"> Your email <strong>'+ emailaddress+'</strong> is OK.</font> '); } else { […]

尝试运行.jar时出现“签名文件无效”

我的Java程序打包在一个jar文件中,并使用外部jar库, 充气城堡 。 我的代码编译好,但运行该jar导致以下错误: 线程“main”中的exceptionjava.lang.SecurityException:Manifest主要属性的签名文件摘要无效 我search了一个多小时寻找解释,发现价值很小。 如果有人曾经看到这个错误,并可以提供一些帮助,我会被迫。

一种用于膨胀/缩小(偏移,缓冲)多边形的algorithm

我怎样“膨胀”一个多边形? 也就是说,我想要做类似的事情: 要求是新的(充气的)多边形的边/点与旧的(原始的)多边形的距离相同(在他们不是的示例图片上,因为那么它将不得不使用弧来填充顶点)现在忘了这个;))。 我正在寻找的math术语实际上是向内/向外的多边形偏离 。 为了指出这一点,给balint +1。 替代的命名是多边形缓冲 。 我的search结果: 这里有一些链接: 多边形切断策略综述 多边形偏移,PROBLEM caching多边形数据

有更多的接口比正确的方法

所以可以说我有这个接口: public interface IBox { public void setSize(int size); public int getSize(); public int getArea(); //…and so on } 我有一个实现它的类: public class Rectangle implements IBox { private int size; //Methods here } 如果我想使用接口IBox,我实际上不能创build它的一个实例,方式如下: public static void main(String args[]) { Ibox myBox=new Ibox(); } 对? 所以我实际上必须这样做: public static void main(String args[]) { Rectangle myBox=new Rectangle(); } […]

使用Node.js执行命令行二进制文件

我正在将一个CLI库从Ruby移植到Node.js。 在我的代码中,我需要时执行几个第三方的二进制文件。 我不知道如何最好的在Node中做到这一点。 下面是Ruby中的一个例子,我打电话给PrinceXML将文件转换为PDF: cmd = system("prince -v builds/pdf/book.html -o builds/pdf/book.pdf") 什么是节点中的等效代码?

如何在Python中“cd”?

cd在shell命令中更改工作目录。 如何在Python中更改当前的工作目录?

为什么使用迭代器而不是数组索引?

采取以下两行代码: for (int i = 0; i < some_vector.size(); i++) { //do stuff } 和这个: for (some_iterator = some_vector.begin(); some_iterator != some_vector.end(); some_iterator++) { //do stuff } 我被告知第二种方式是首选。 为什么呢?

HTML.ActionLink方法

假设我有一堂课 public class ItemController:Controller { public ActionResult Login(int id) { return View("Hi", id); } } 在没有位于ItemController所在的Item文件夹的页面上,我想创build一个指向Login方法的链接。 那么我应该使用哪个Html.ActionLink方法,以及我应该传递哪些参数? 具体来说,我正在寻找替代的方法 Html.ActionLink(article.Title, new { controller = "Articles", action = "Details", id = article.ArticleID }) 已经在最近的ASP.NET MVC化身中退役了。