python中怎么排序数组?python为啥运行效率不高?

经过数十年的艰苦努力,Python才受到编程社区的赞赏。自2010年以来,Python蓬勃发展,并最终超过C,C#,Java和JavaScript。如今python可谓是我们日常比较常见的编程语言之一了。因此在使用Python进行编程时遇到任何问题,只需在线搜索即可获得答案。因为在那之前总会有人遇到这个问题,例如python中怎么排序数组,python为啥运行效率不高等问题。

python中怎么排序数组?python为啥运行效率不高?_业界动态_行业云

 python中数组排序的方法:

1、一维数组采用sort函数进行排序;

2、多维数组利用sort函数结合lambda匿名函数进行排序。

 1、数组排序

a = [3,1,4,6]

a.sort()

print(a)

执行结果:

python中怎么排序数组?python为啥运行效率不高?_业界动态_行业云

 2、多维数组排

a = [['5.1.5.40580', 29], ['5.0.8.14000', 11], ['5.0.8.14999', 59], ['5.1.4.37882', 4]]

a.sort(key=lambda x:x[1],reverse=True)

print(a)

key=lambda x:x[1]:按照数组索引1列进行排序,无此参数默认以0列进行排序。

reverse=True:倒序,无此参数默认升序。

执行结果:

python中怎么排序数组?python为啥运行效率不高?_业界动态_行业云

 python为啥运行效率不高?

第一:python是动态语言

一个变量所指向对象的类型在运行时才确定,编译器做不了任何预测,也就无从优化。举一个简单的例子: r = a + b。 a和b相加,但a和b的类型在运行时才知道,对于加法操作,不同的类型有不同的处理,所以每次运行的时候都会去判断a和b的类型,然后执行对应的操作。而在静态语言如C++中,编译的时候就确定了运行时的代码。

另外一个例子是属性查找,关于具体的查找顺序在《python属性查找》中有详细介绍。简而言之,访问对象的某个属性是一个非常复杂的过程,而且通过同一个变量访问到的python对象还都可能不一样。而在C语言中,访问属性用对象的地址加上属性的偏移就可以了。

第二:python是解释执行,但是不支持JIT(just in time compiler)。虽然大名鼎鼎的google曾经尝试Unladen Swallow 这个项目,但最终也折了。

第三:python中一切都是对象,每个对象都需要维护引用计数,增加了额外的工作。

第四:python GIL,GIL是Python最为诟病的一点,因为GIL,python中的多线程并不能真正的并发。如果是在IO bound的业务场景,这个问题并不大,但是在CPU BOUND的场景,这就很致命了。所以笔者在工作中使用python多线程的情况并不多,一般都是使用多进程(pre fork),或者在加上协程。即使在单线程,GIL也会带来很大的性能影响,因为python每执行100个opcode(默认,可以通过sys.setcheckinterval()设置)就会尝试线程的切换,具体的源代码在ceval.c::PyEval_EvalFrameEx。

第五:垃圾回收,这个可能是所有具有垃圾回收的编程语言的通病。python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡。infoq上有一篇文章,提到禁用Python的GC机制后,Instagram性能提升了10%。感兴趣的读者可以去细读。

以上就是关于python中怎么排序数组,以及python为啥运行效率不高的全部内容,想了解更多关于python的信息,请继续关注。

35
41
0
4

相关资讯

  1. 1、美图秀秀如何给图片调整色温?美图秀秀调整色温的教程2692
  2. 2、Win10系统ping时出现传输失败常见故障?这招收好了2957
  3. 3、Win7旗舰版如何设置个性化鼠标指针1048
  4. 4、Win1020h2和2004区别在哪里?4790
  5. 5、猎豹清理大师如何软件搬家?猎豹清理大师软件搬家教程4686
  6. 6、天猫读书怎么开启夜间模式?天猫读书开启夜间模式的方法3740
  7. 7、Win7系统使用360修复系统漏洞后电脑蓝屏怎么办?4981
  8. 8、U盘处于被保护状态怎么办?U盘处于被保护状态的解决办法1678
  9. 9、手机微信未成年人成长守护怎么打开?微信未成年人成长守护打开方法详解4842
  10. 10、爱思助手如何查看全备份中的微信聊天记录?1569
全部评论(0)
我也有话说
0
收藏
点赞
顶部