一 列表推导式
列表推导式:提供了 一种创建列表的简单途径
(1) 最简单的方式
myList = [i for i in range(1,8)]
[1, 2, 3, 4, 5, 6, 7]
(2) 用 if 过滤
myList = [3*i for i in range(1,8) if i>3]
myList = [i+1 for i in range(1,20,2)]
# myList = []
# for i in range(1,8):
# if i>3:
# myList.append(i*3)
# print(myList)
(3) 列表的嵌套
myList = []
for i in range(1,20):
myList.append([i,i+2])
print(myList)
myList = [[i,i+2] for i in range(1,20)]
(4) 循环的嵌套
myList = [[x,y] for x in range(1,10) for y in range(3,10)]
myList = []
for x in range(1, 10):
for y in range(3,10):
myList.append([x,y])
例子:
把一个 3x4的矩阵转换成 4x3的矩阵列表
myList = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
myList = [
[*,*,*],
[*,*,*],
[*,*,*],
[*,*,*]
]
newList1 = []
for i in range(4):
newList2 = []
for x in myList:
# print(x[i])
newList2.append(x[i])
# print(newList2)
newList1.append(newList2)
#变成列表推导式
newList = [[row[i] for row in myList] for i in range(4)]
二 迭代器和生成器
(1) 迭代器
迭代对象:能够作用于for循环的称为迭代对象 我们可以通过isinstance 去判断是否为可迭代对象
引入 from collection import Iterable
from collections import Iterable
print(isinstance("",Iterable))#True
print(isinstance({},Iterable))#True
print(isinstance((),Iterable))#True
print(isinstance(1,Iterable))#False
print(type(()))
TypeError: 'int' object is not iterable
for i in 1:
print(i)
迭代器:
将可迭代对象 加上 iter函数 生成 迭代器
能够配合 next的方法来使用 每次next 会输出一个元素的值
myIter = iter(myStr)
print(myIter) #<str_iterator object at 0x000001820AA800B8>
print(next(myIter))
print(next(myIter))
print(next(myIter))
# print(next(myIter)) #当我的迭代器走完以后 会报StopIteration的错误信息
(2) 生成器
生成器有俩种方式
使用列表推导式
#好处 节约资源 避免一次生成 用一次生成一个 myGen = (x for x in range(10000000000)) #生成器
将函数里 配合 yield 关键字
def demo(): for i in range(100): print(i) yield i myGen = demo() next(myGen) #配合 next方法 每次 next一次 就会往下 走一次
注意:
当我的生成器 走完以后 依然会报 StopIteration 的错误
三 装饰器
概念:在代码运行期间动态的增加功能 称之为装饰器
四 os模块
概念:包含了操作系统的大部分功能
函数名 | 函数值 |
---|---|
os.name | 获取当前的操作系统的类型nt->windows posix->unix 后者Linux |
os.environ[ɪn’vaɪərən] | 获取操作系统中的环境变量 |
os.environ.get(“path”)[ɪn’vaɪərən] | 获取path的环境变量 |
os.curdir() | 获取当前的目录 |
os.getcwd() | 获取当前的工作目录 |
os.listdir() | 以列表的形式 返回当前目录的文件 |
os.mkdir() | 创建目录 |
os.rmdir() | 删除目录 |
os.rename(old,new) | 修改文件后者文件夹的名字 |
os.remove() | 删除文件 |
os.system(command) | 执行系统命令 |
os.path.join(path1,path2) | 将path1和path2拼接成一个正常的路径 |
os.path.splitext() | 获取文件扩展名 |
os.path.isdir() | 判断是否是目录 |
os.path.isfile() | 判断是否是文件 |
os.path.exists() | 判断文件或者目录是否存在 |
os.path.getsize() | 获取文件的大小(字节) |
os.path.dirname() | 获取路径的目录名 |
os.path.basename() | 获取路径的文件名 |
os.path.abspath() | 返回文件的绝对路径 |
os.path.split() | 拆分路径 |