python 推导式和模块的导入

本文深入探讨Python中的数据结构推导式,包括列表、字典和集合的推导,以及模块的概念、创建、导入和搜索路径,帮助读者掌握Python高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、推导式

推导式 comprehensions(又称解析式),是 python 的一种独有特性。推导式是 可以从一个数据序列构建另一个新的数据序列。 推导式包括:1.列表(list)推导式 2.字典(dict)推导式 3.集合(set)推导式。

(一)列表推导式

列表推导式(list comprehension)是利用其它列表创建新列表的一种方式, 工作原理类似 for 循环,即可对得到的元素进行转换或者筛选。 列表推导式的基本格式: 变量名=[表达式 for 变量 in 列表] 或者 变量名= [表达式 for 变量 in 列表 if 条件] 执行流程: 遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。 或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。

将 lst 中每一个元素进行平方后放入到一个新列表中
lst = [1, 2, 3, 4, 5, 6, 7, 8]

lst_new = [i * i for i in lst] print(lst_new) # [1, 4, 9, 16, 25, 36, 49, 64]

(二)字典推导式

字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。
字典推导式格式: 变量名={…}

练习: 将字典中的 key 和 value 进行对换。

dic = {k:v for k,v in zip(list(“ABC”),list(“123”))} zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元 组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返 回列表长度与最短的对象相同

(三)集合推导式

集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]
在这里插入图片描述

二、模块的概念

(一)模块的概念介绍
一个包含 python 代码的文件就是一个模块。 使用模块的作用:
1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方 便维护与管理
2.模块可以增加代码的重用率

(二)创建模块

模块本身就是一个文件,所有 py 代码都可以在文件中直接书写。不过我们开发 共用模块时,最好在模块中书写以下内容。

变量    模块中的属性值

函数    单独的功能

类     相似功能组合

模块测试代码 临时使用,被导入时不会执行

注意:
1.模块名称遵循标识符。
2.模块只有第一次被导入的时候执行,多次导入不会执行。

(三)模块导入的原理

模块导入原理:

  1. 模块导入会将要导入的文件执行一遍
  2. 导入模块的名称就是我们定义的脚本或包的名称
  3. 我们导入模块的过程总结就是:在指定的范围内搜索指定名称的 python 脚本或者包,将其运行, 获取其中的方法

模块的导入方式 :

模块导入的方式有以下多种
1.import 模块名
2.import 模块名 as 别名
3.import 模块名 1,模块名 2,… 一行导入多个模块。
4.from … import …
5.from … import … as 别名
6.from … import 功能 1,功能 2,…
7.from … import * 导入所有



import 模块 as 别名:

如果模块的名称太长,我们可以这个模块起一个别名。

三、模块搜索路径

当你导入一个模块,python 解析器对模块位置的搜索顺序是: 1、当前目录 2、如果不在当前目录,python 则搜索在 shell 变量 pythonPATH 下的每个目录。 由 sys 模块的 sys.path 方法来规定

因为 sys.path 返回的数据类型是列表 1、列表可以修改、我们导入的范围也可以通过修改 sys.path 这个列表获得暂时 的修改。例如通过 sys.path.append()添加目录,导入额外目录的模块。 2、列表是有序的,当搜索的过程当中,在第一个路径下搜索到了,就停止搜索。 而且 sys.path 第一个路 径是脚本的当前路径,所以禁止大家讲自己的脚本命名 成模块的名称。

因此需要注意的是:自己模块命名的时候不能和系统的模块名称相同。

四、包的导入

1.关于包相关的导入语句也分为 import 和 from … import …两种,但是无论哪种, 无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左 边都必须是一个包,否则非法。可以带有一连串的点,如 demo01.demo02.demo03, 但都必须遵循这个原则。

2.对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类 (它们都可以用点的方式调用自己的属性)。

3.对比 import demo 和 from demo import name 的应用场景: 如果我们想直接使用 name 那必须使用后者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值