python自学笔记3 控制结构
条件语句
略
循环语句
略
range函数
enumerate() 函数
可以将一个可迭代对象转换为一个由索引和元素组成的枚举对象。
索引的起始编号是0,也可以传入第二参数来指定其起始编号
zip函数
打包范围以两者最短的长度为准
以两者较长的长度为准的函数为itertools.zip_longest()
一个计算向量内积的应用
向量化
这是不用numpy处理矩阵的方法:
使用numpy后可以更加轻松的处理矩阵
同样也可以处理向量内积
可以用下面这个程序来比较两种方法处理矩阵的效率
列表生成
语法:[expression for item in iterable if condition]
下面是一个列表生成的例子:
还可以嵌套使用生成矩阵:
可以看到嵌套使用时,i和j的顺序反了过来。
应用
往线段上插点:
往线段上插点在python中有两种用法
- 确定范围,不确定间隔长度,从开始到结束均匀的插满
- 确定间隔长度,不确定范围,结束的位置不插上端点
函数实现:
矩阵转置:
将原矩阵的没一列提取出来,作为行插入到新矩阵中
另一种写法:
上述代码中,i和j代表新矩阵的行和列,对应的遍历数量是旧矩阵的列和行,所以i,j在原矩阵的位置和对应的range函数如上图所示。
计算矩阵逐项积:
笛卡尔集:
举个简单的例子,假设有两个集合: A = {1, 2} 和 B = {‘a’, ‘b’}。 它们的笛卡尔积为:{(1, ‘a’), (1, ‘b’), (2, ‘a’), (2, ‘b’)}。
一层列表实现笛卡尔集
两层列表实现笛卡尔集
迭代器
itertools 是 Python 标准库中的一个模块,提供了用于创建和操作迭代器的函数。
迭代器是一种用于遍历数据集合的对象,它能够逐个返回数据元素,而无需提前将整个数据集加载到内存中。
不放回排列
实现代码:
其中perm_idx遍历结果是一个元组,要用’'.join(perm_idx)连成一个字符串
itertools.permutations 函数还有一个可选参数,用于返回排列中元素的数量。
代码:
有放回的排列
代码:
有放回的组合
代码: