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