Python 琐记二
1. zip函数
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
2. 写入wav files
http://stackoverflow.com/questions/3637350/how-to-write-stereo-wav-files-in-python
3. 矩阵转置
可以用1中的zip函数 zip(*x)
一维数组的转置还可以
M=10
k = np.array(range(M))
k = np.matrix(k).T
4. 复数表示
虚数i用j表示,且虚数系数是1时要在j前加上1,如 1+1j
math.exp(1+2j)会报错,can’t convert complex to float
应使用cmath.exp(1+2j) 或者 (math.e) ** (1+2j)
5. 复数取模
自以为是math.abs 或者 cmath.abs结果发现就是abs
6. 读取二维数组的第几列
s = [[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8],[4,5,6,7,8,9]]
[t[0] for t in s] #这是第1列
[t[1] for t in s] #这是第2列
list(zip(*s)[0]) #这是第1列
list(zip(*s)[1]) #这是第2列
以上两种方法均可以
7. functools.partial
在map、reduce、filter里如果想传递多个参数给函数,可以查阅functools.partial的用法
简单来说就是能使函数用更少的参数进行调用,示例如下:
import functools
def add(a, b):
return a + b
add(4, 2)
6
plus3 = functools.partial(add, 3)
plus5 = functools.partial(add, 5)
plus3(4)
7
plus3(7)
10
plus5(10)
15
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
GitalkLivere