欢迎回来｡
现在,
我们将用这门课的一大部分时间来构建一些项目, 使用一些内置的Python模块, 以及使用Python包索引中的一些流行的第三方库｡
但是, 我想给你们看一个视频,
介绍一些我个人喜欢的Python内置模块｡
其中一些非常有用的模块实际上允许我们在Python中使用更多的数据类型｡
还记得在课程开始的时候,
我讲了Python自带的数据类型, 然后我们学习了类, 以及如何在Python中创建自己的数据类型和对象｡
但我们也有这些专门的数据类型, 它们也内置在Python标准库中, 它们真的非常非常好｡
这可以使我们的程序非常非常强大｡
现在它们是专门化的, 因为你不会到处都看到它们, 但知道它们存在是件好事｡
我将回顾一些我最喜欢的｡
我要向大家展示的第一个模块是收集模块｡
所以集合模块是从集合或集合中产生的｡
这里有三样东西我很喜欢｡
我将输入import, 我将输入计数器, 默认字典, 然后是有序字典｡
注意有些是类因为它们是大写字母.
其中一些看起来只是一个函数｡
您可以再次浏览集合模块, 滚动此处, 查看集合,
您可以看到我们拥有的所有集合｡
在这些系列中, 让我们从第一个开始｡
计数器非常有用｡
假设我有一个包含1, 2, 3, 4, 5, 6,
7的列表, 如果我打印计数器, 我想计算列表中有多少项｡
你可以在这里看到它的作用｡
但本质上, 如果我给予它一个列表, 然后点击运行｡
好吧, 我会的
刚才发生了什么？
它创建了一个字典, 其中一个有一个, 两个有一个, 三个有一个｡
嗯嗯嗯
如果我们在这里再加7个呢？
七个吧｡
如果我点击运行｡
你看到了吗？
七号现在有两个了｡
所以它所做的就是创建一个字典来记录一个项在可迭代对象中出现了多少次｡
所以那七个人出现了两次｡
所以7的值是2｡
另一种方法是, 假设我们有一个句子, 在这个句子中, 我想检查｡
那我们就写点东西吧｡
我会说废话废话废话｡
想想巨蟒｡
如果我在这里做一个计数器, 让我们说, 如果我单击“运行”, 给予它一个句子｡
你看
我看到哪个字母出现得最多｡
在我们的例子中, h出现了五次, 空间出现了五次, 然后B出现了四次｡
这真的很酷｡
因为这种计数器的计算, 把一个列表,
变成我们称之为散列映射或者字典的东西, 来保持计数, 这是一个非常有用的函数, 在编程中随处可见｡
它实际上对优化问题有很大帮助｡
现在, 我们不打算深入讨论这个问题,
但我只想向您展示, 如果您想统计重复用户或重复电子邮件, 计数器是一个非常非常有用的工具｡
计数器真的非常非常有用｡
下一个呢？
违约, 迪克｡
天哪, 这词真的很难说出口｡
好的, 假设我们有一本字典,
这本字典有一个很小的字典有一个1和一个B｡
多简单的字典啊｡
现在, 在这里, 我可以说字典｡
点点｡
或者把A括起来我就能得到值了｡
好吧, 我知道了
如果我单击“运行”｡
哦, 我没有拼写字典｡
好吧, 我知道了
让我们来解决这个问题｡
这样好多了
我们暂时将其注释掉, 因为我们不需要它｡
你会看到我得到的值是1｡
但如果我试图访问一些不存在的东西｡
看到了吗？
使用默认词典时出现错误｡
如果不存在的话我会得到一个默认值｡
因此, 让我们将其转换为默认字典｡
就像这样｡
现在如果我运行这个程序, 我们会得到一个错误｡
第一个参数必须是可调用的或无｡
默认的dict允许我们访问这样的键, 但是给予它一个默认值.
在我们的例子中, 我们需要在这里给予它一个可调用对象｡
可调用的意思是一个函数, 如果我运行的话, 它可以被调用｡
我得零分｡
为什么会这样呢？
好吧, 当我运行int｡
就像这样里面什么都没有｡
我们得不到任何回报｡
所以一个简化的方法, 因为这个程序要运行, 就是给予它一个我们不会用到的快速函数｡
所以我们先做一个lambda然后给予它｡
五个吧｡
如果我运行这个程序, 我们在这里运行字典｡
快跑啊
哦, 让我们试着抓住｡
一些不存在的东西｡
如果我单击“运行”, 我会得到5｡
所以这是一个常见的模式｡
你看, 对于默认的dict, 我们只是给予它一个值或者一个可调用的对象｡
在我们的例子中, 我们只是给它这个函数, 一个lambda函数, 它只返回5｡
所以我甚至可以在这里说｡
难道它不存在｡
第二个参数将是我们想要的任何参数｡
如果我跑了｡
我得到的是不存在的, 即使我访问的是一个不存在的键.
现在, 如果我在这里执行, 然后按一下[执行]｡
一切正常｡
我还是有一个｡
如果我是｡
我想也是｡
这又是一个有用的小数据类型｡
下一个是命令dicked和这一个是另一个有趣的｡
而order dictionary会保留您插入字典的顺序｡
让我来告诉你｡
如果我们有, 比如字典, 这个字典是一个有序字典｡
这就是我们创造它的方式｡
在这里, 如果我做dx, 等于｡
这将等于1｡
然后是D｡
Be将等于2｡
现在我复制了这本词典, 并制作了第二本｡
让我们说rd to｡
研发部｡
然后我过牌｡
嘿, 打印DX2等于dx吗？
请记住, 这将检查值｡
如果我运行这个｡
我得到真实了吗？
是的, 他们是平等的｡
但是如果我改变了插入的顺序, 然后单击运行｡
我得到假的｡
抱歉, 这不是一回事, 因为它维护了秩序｡
如果这是一本普通的字典｡
所以我们不用这里的, 我只需要创建一个字典, 我们就｡
我们在这里做一个简单的例子, 比如说, 100｡
对这个也做同样的事情｡
DD二｡
等于这个｡
如果我现在运行这个｡
我得到true是因为所有的键和值都和普通字典一样｡
我们不在乎｡
没有秩序｡
我之前也提到过｡
用Python编写字典没有秩序感｡
尽管当我们打印出密钥时, 我们可能会把事情弄得井井有条｡
当我们的字典变得越来越大时, 我们不能保证当我们打印出所有的键时, 我们会得到它们的顺序｡
然而, 在顺序字典的情况下, 我们得到了这种保证｡
现在, 这会对性能产生一些影响｡
但是, 总的来说, 它在某些情况下是有用的｡
好吧, 我会的
还有几个要看, 但这个视频越来越长了｡
我们先休息一下, 下一个视频再见｡
再见, 再见, 再见