今天要学习的技术点,Python 筛选数字,模块导入,特殊变量 __all__ 实战博客
每天学一点,所以本系列专栏,每篇不超过 3000 字(含代码)
📆 最近更新:2022 年 4 月 9 日,橡皮擦的第 <font color=red>612</font> 篇原创博客
@[toc]
⛳️ 查找计数低于 2 的数字
问题场景系统初始化一个纯数字的列表,例如命名为 my_list
,在该列表中找到出现数量低于 2 的所有数字。
解决思路先模拟一些数据:例如:操作 my_list = [1,2,3,3,4,4,5,5,6]
之后,返回 1,2,6
;操作 my_list = [1,2,3,3]
之后,返回 1,2
;
实现该案例,可以将列表从小到大进行排序,然后遍历列表,判断当前元素和下一元素大小,如果出现重复将该值存入新的数组中。
最终通过比较两个列表的差异,获取最终的数据。
编码如下
⛳️ Python 模块导入
问题场景在 Python 代码的编写过程中,经常碰到需要使用第三方模块,或者使用团队其它人编写的模块,此时就应用到模块导入相关概念了。
解决思路模块导入的标准语法结构为:
其中 as + 别名
在模块名称比较简单的时候,可以直接省略。别名原理类似下述代码:
上述代码较于 as
的缺点是,会在名称空间中产生两个变量,多一点点的的空间消耗。
import 语句不要求必须出现在文件的开头,任意位置都可以进行导入操作。
编码如下新建一个 tools.py
文件,编写如下代码:
在当前目录新建立一个 user.py
文件,然后导入刚才创建好的文件。
⛳️ 使用 from ... import ... 导入模块
问题场景 import 导入模块的方式会把全部内容进行导入,如果仅需要指定部分,可以使用 from...import...
导入模块中的指定成员。
解决思路和编码时间例如下述代码:
除此之外,在 from
后面可以使用相对路径,例如下述代码:
相对路径的逻辑与文件目录访问基本一致,可以使用 .
表示当前目录,..
表示父级目录。
在 import 关键字之后还可以使用 *
,表示导入全部成员,默认不包括下滑线 _
开头的成员,当然也可以在模块中使用 __all__
变量, import
默认导入该声明中的变量。
如果模块定义了
__all__
,默认导入该变量中的所有成员;如果无
__all__
,导入非_
开头的变量。
⛳️ __all__
变量
问题场景很多时候,我们并不希望模块成员被全部导入,最好只导入我们需要的部分。这样就用到了 __all__
变量。解决思路和编码时间__all__
变量是一个序列,其中的每一个元素都是字符串,因为它可以是列表,元组类型,并且其中的元素要出现在当前名称空间中(也可以是其它模块导入的)
接下来我们在 tools.py
文件中声明三个函数:
在另一个文件 use.py
中,使用 from tools import *
,会发现只有 show1
和 show2
函数被导入。
⛳️ 在数组中找到目标数字接近值
问题场景系统输入一个数组,然后给出一个目标数字,接下来计算数组中的任意两个数字之和,得到一个最接近目标数字的值。
解决思路先编写 Demo,提供一个目标数字 20,提供一个数组 [1,3,4,5,6,10,21],得到最接近的数字是 16。
将数字按照从小到大进行排序,大于等于目标数字的所有值,都被舍去。
依次迭代所有剩余数字,计算每 2 个数字之和,将所有结果存储到一个新的数组中
去除新数组中大于目标数字的所有数字
获取新数组中的最大数字。
编码时间将上述梳理出的逻辑,重现到代码中,得到如下所示结果。
📣📣📣📣📣📣🌻 本文如果发现错误,欢迎在评论区中指正哦 💗
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/bbe3ad00424a03511e5fd63a0】。文章转载请联系作者。
评论