一个常常犯的小错误
最近写了一些集合的小代码,但是却经常莫名其妙的出现一些错误,后来研究挺长时间,发现自己还是读书不够仔细啊:写了一年多C++,创建一个空结构时候经常就句法结构里空置,放在集合上不由自主就写{}
,其实一看这种错误真的有点傻傻的——Python的解释器会把这样的句法识别成一个空字典,就是这么简单。
所以,大家吸取我的教训,以后想创建一个空集合,务必用set()
的构造方法。
关于建立集合
除了刚才介绍的建立空集合的小坑之外,我们建立非空集合时经常用两种方法:
{1,2,3,4}
或者set([1,2,3,4])
,
虽然最终结果一样,但是其实现逻辑和运行速度是有区别的,我们尝试一下就会发现(更有可能发现不了因为在现在计算机的算力面前,我们写的这种小小的代码根本就……)第二种方法会稍微慢一点,这是因为它先从set查询到构造方法,又建立一个List最后把List的元素传入我们的set,进过这么一大圈,显然它的速度会稍微有点欠缺。
frozenset的构造方法
frozenset实际上没有专门的字面量构造法,也就是说我们不能像建立一个普通的set那样直接{}了事,必须使用构造函数来建立:
frozenset (range(10))
如果我们输出一下的话,它应该是这样的:
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
事实上,这个输出不是print出来的,我们直接print会产生这样的结果:<class 'frozenset'>
,而上面的结果是用控制台自动显示出来的frozenset的内容:
shame
我以为现在自主学习的真正障碍再也不是接触不到高质量的课程和针对性的训练——而是一颗自以为“潇洒”的心,但事实证明我错了:除了一颗无所执持的心之外,还有各种各样深埋在意识深处的“业障”,既阻碍了自己,还想阻碍别人。
Shame
网友评论