开发者社区> 技术mix呢> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Python Set Literals

简介:
+关注继续查看

现有3种方式创建set()

复制代码
>>> def f():
...     return set([1, 2, 3])
... 
>>> def h():
...     return set((1, 2, 3))
... 
>>> def g():  #set Literals
...     return {1, 2, 3}

>>> f()
set([1, 2, 3])
>>> h()
set([1, 2, 3])
>>> g()
set([1, 2, 3])
复制代码

效率对比

复制代码
>>> import timeit
>>> min(timeit.repeat(f))
0.675529956817627
>>> min(timeit.repeat(h))
0.5531120300292969
>>> min(timeit.repeat(g))
0.35515809059143066
复制代码

对比结果

可见set Literals完胜

原理

为了了解其中的原因,分析下生成set()的原理

复制代码
>>> dis.dis(f)
  2           0 LOAD_GLOBAL              0 (set)
              3 LOAD_CONST               1 (1)
              6 LOAD_CONST               2 (2)
              9 LOAD_CONST               3 (3)
             12 BUILD_LIST               3
             15 CALL_FUNCTION            1
             18 RETURN_VALUE        
>>> dis.dis(h)
  2           0 LOAD_GLOBAL              0 (set)
              3 LOAD_CONST               4 ((1, 2, 3))
              6 CALL_FUNCTION            1
              9 RETURN_VALUE        
>>> dis.dis(g)
  2           0 LOAD_CONST               1 (1)
              3 LOAD_CONST               2 (2)
              6 LOAD_CONST               3 (3)
              9 BUILD_SET                3
             12 RETURN_VALUE 
复制代码

分析

f()需要载入全局函数set,把三个元素放入栈中,然后调用set()函数,就生成了set()

h()也需要载入全局函数set,不是把三个元素载入栈,而是把一个元组常量放入栈,然后调用set()函数,就生成了set()

g()是直接把三个元素放入栈,然后就生成了set()

总结

尽管这里生成set()的方式对性能的提升很小,set literals不用花费时间调用函数处理中间数据,并且这种写法是非常漂亮的,所以建议用set literals的方式

 





本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/6139573.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python刷题系列(5)_set集合(下)
set 是一个不允许内容重复的组合,而且set里的内容位置是无序的,所以不能用索引列出。可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
48 0
Python刷题系列(5)_set集合(上)
set 是一个不允许内容重复的组合,而且set里的内容位置是无序的,所以不能用索引列出。可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
79 0
Python - 基础数据类型 set 集合
Python - 基础数据类型 set 集合
29 0
python set集合的基本运算
冻结的集合 一般的集合set都是可原处修改的集合。还有一种集合,不能在原处修改。 这种集合的创建方法是: frozenset("hiekay") >>> f_set = frozenset("hiekay") #看这个名字就知道了frozen,...
935 0
12.5、python基础数据类型(set集合)
基础数据类型(set集合) 认识集合   由一个或多个确定的元素所构成的整体叫做集合。   集合中的元素有三个特征:     1.确定性(集合中的元素必须是确定的)     2.互异性(集合中的元素互不相同。
790 0
Python的set集合详解
     Python 还包含了一个数据类型 —— set (集合)。集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。
2008 0
认识python中的set集合及其用法
python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或列表中的元素进行去重操作。
891 0
Python编程:Built-in Functions内建函数小结
Python编程:Built-in Functions内建函数小结
20 0
《Python树莓派编程》—— 1.4 树莓派操作系统
本节书摘来自华章出版社《Python树莓派编程》一书中的第1章,第1.4节,作者:[美]沃尔弗拉姆·多纳特(Wolfram Donat)著 韩德强 等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1517 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Python系列直播第一讲——Python中的一切皆对象
立即下载
Alibaba_Cloud_Whitepaper_-_Improving_your_Organizations_Data_Governance_Scorecard
立即下载
Python 脚本速查手册
立即下载