Python中list,一个list内的所有元素如何两两相减

春暖花开人心浮动,吾思当左遷之一则工资上涨,二则环境变好奈何世道不然,吹牛空谈者大受欢迎而吾实事求是者则落寞如此,知之为知之不知为不知。

投遞无数才得一二,某国有电信公司邀请面试始记得吾曾于去年三月去过,现复一年又至三月碰运气吧!

约至午后两点,前台等候看人群左左右右的通过,心烦意乱约莫两刻过去了,方使有人慢悠悠的过来询问情况。领至一室面窗而座,春日阳光甚毒心烦更甚,看面前之人实是公司无要职之人来应付我罢了。

一白纸一枝笔,写一算法求两组各值相减的绝对最小值 。怒已吾实乃无急智の人,左右思之不得头绪,只得推说不会来人讲:

你就不会写个双重循环吗?


今得空闲思之,将我的算法公之于众

双重循环确实昰最简单的,但大家都知道双重循环是最耗时间和CPU的10*10、100*100、都没有什么问题,但当你时问题就来了1亿次的循环,够呛的了

现在把双重循环和我的算法贴出来,请同学们过目指出可以改进的地方


算下来,当时双重循环用时大概N0秒左右 ,看你的计算机性能了而我写的昰做了20000次的循环,大概1秒多点跟1亿次时间上差距很大。

#随机两个包含1万个元素的list #打印开始时间这是第一种方法,采用传统的双循环的處理方法10000^2就是一个亿啊 #打印开始时间。第二种方法我的方法,基本思路是双循环变单循环两个10000就是20000 #使用python内建函数 ,无论在什么时候python的内建函数绝对比你的方法快 #两个list合并,去重看看长度是否减小,如果有减小就证明了一件事,两个list中有元素相同这两个元素相減绝对等于0 #将合并后的list排序 #已经排序了,我们只需要让后一个减前一个然后再保证这两个数据原来不是在相同的list中即可
    

    
    

主要是and条件不好解决,我查了些资料没有发现python的xor,不知道到底有没有
后记Intel的U系列CPU果然性能差,随机值的大小也能影响到速度借同学的至强E5服务器,15秒双循环就完成了而我写的不到0.1秒
    

    
    

    
  

list不能够实现数值的直接加减需偠通过numpy数组来实现
不用for循环,当然可以利用for循环来实现


  

这篇文章主要介绍了Python中list实现对list做減法操作介绍,需要的朋友可以参考下

问题描述:假设我有这样两个list

我要回帖

更多关于 Python中list 的文章

 

随机推荐