Python的Set和List的性能比较 + 两者之间的转换

1.能用set 不用list

~$ python -m timeit -n 1000 "[x for x in range(1000) if x in range(500, 1500)]"

1000 loops, best of 3: 28.2 msec per loop

~$ python -m timeit -n 1000 "set(range(1000)).intersection(range(500, 1500))"

1000 loops, best of 3: 120 usec per loop

List 大概用了Set的225倍的时间。List转Set基本用不了什么时间,所以如果有需要求(集合,列表等)的并集和交集的时候,最好使用Set。

2.

set转成list方法如下:                                                     list转成set方法如下:
s = set(‘12342212‘)                                                      l = [‘12342212‘]
print s    # set([‘1‘, ‘3‘, ‘2‘, ‘4‘])                                    s = set(l[0])
l = list(s)                                                                          print s    # set([‘1‘, ‘3‘, ‘2‘, ‘4‘])
l.sort()    # 排序                                                               m = [‘11‘,‘22‘,‘33‘,‘44‘,‘11‘,‘22‘]
print l    # [‘1‘, ‘2‘, ‘3‘, ‘4‘]                                              print set(m)    # set([‘11‘, ‘33‘, ‘44‘, ‘22‘])

可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。

时间: 2024-08-10 02:11:19

Python的Set和List的性能比较 + 两者之间的转换的相关文章

python中数组,元组,字典和字符串之间的转换

1.字典 字典转为字符串 >>> dict={'name':'zhzhgo','age':25} >>> print type(str(dict)),str(dict) <type 'str'> {'age': 25, 'name': 'zhzhgo'} >>> 字典转为元组 >>> dict={'name':'zhzhgo','age':25} >>> print type(tuple(dict)),t

用Python内置函数轻松实现各种进制数之间的转换

0.说明 9个月没有写过Python了,这9个月都在华为的ICT知识海洋里遨游,前段时间刚刚通过了HCIE的认证,想着还是喜欢Python和Linux多些,所以又回来了,后面会有越来越多的Python干货分享给大家,比如后面会打算写一个完整的Linux主机监控项目的教程给初入门的朋友,相信这会是非常不错的体验. 那段时间,曾经有些时候,我需要对各种进制进行转换,因为虽然那会不写Python了,但是还是用Python自带的解释器用来做简单的数学计算,很方便. 在网上找,看有没有方法可以实现各种进制

python timestamp和datetime之间的转换

做开发中难免时间类型之间的转换, 最近就发现前端js和后端django经常要用到这个转换, 其中jsDate.now()精确到毫秒,而Python中Datetime.datetime.now()是精确到微秒的. 1. 字符串日期时间转换成时间戳 # '2015-08-28 16:43:37.283' --> 1440751417.283 # 或者 '2015-08-28 16:43:37' --> 1440751417.0 def string2timestamp(strValue): try

《Python CookBook2》 第一章 文本 - 每次处理一个字符 &amp;&amp; 字符和字符值之间的转换

文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将数据以某种方式转化为另一种相似的形式,数据本身发生了改变:③生成全新的数据 每次处理一个字符: 任务用每次处理一个字符的方式处理字符串. 解决方案可以创建一个列表,列表的子项是字符串的字符.代码如下: >>> thelist = list('thestring') >>>

Python脚本之django---mysql-记录主机性能数据到数据库-web站点管理数据库及web显示命令执行结果

##############################################################环境 [[email protected] python]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.4 (Santiago) You have new mail in /var/spool/mail/root [[email protected] python]# python -

Python并行编程(十):多线程性能评估

1.基本概念 GIL是CPython解释器引入的锁,GIL在解释器层面阻止了真正的并行运行.解释器在执行任何线程之前,必须等待当前正在运行的线程释放GIL,事实上,解释器会强迫想要运行的线程必须拿到GIL才能访问解释器的任何资源,例如栈或Python对象等,这也正是GIL的目的,为了阻止不同的线程并发访问Python对象.这样GIL可以保护解释器的内存,让垃圾回收工作正常.但事实上,这却造成了程序员无法通过并行执行多线程来提高程序的性能.如果我们去掉GIL,就可以实现真正的并行.GIL并没有影响

Python脚本之django---mysql-记录主机性能数据到数据库

[[email protected] ~]# tail -20000 /tmp/python/alldjango-mysql.py #!/bin/usr/bin python import os,datetime,paramiko import tab,sys,multiprocessing,time sys.path.append('/tmp/python/Django-1.5.1/django/bin/myweb') os.environ['DJANGO_SETTINGS_MODULE']

Perl和Python的比较(主要是性能比较)

Python语法简单,而且通过缩进的方式来表现层次结构,代码非常简明易懂,对初学者来说,比较容易上手. Perl的模式匹配非常强大,同时匹配的符号有很多种,难以阅读和维护. 在文本处理方面,python通过加载re模块来实现模式匹配的查找和替换.而Perl内置就有模式匹配功能. note:内置命令和外部命令的区别. 通过代码来直接做比较. python版: #!/usr/bin/python import re import fileinput exists_re = re.compile(r'

吴裕雄 python 机器学习——模型选择回归问题性能度量

from sklearn.metrics import mean_absolute_error,mean_squared_error #模型选择回归问题性能度量mean_absolute_error模型 def test_mean_absolute_error(): y_true=[1,1,1,1,1,2,2,2,0,0] y_pred=[0,0,0,1,1,1,0,0,0,0] print("Mean Absolute Error:",mean_absolute_error(y_tr