一.解包
>>> matrix=[
[1,2,3],[4,5,6],
[7,8,9],
]
>>> list(zip(*matrix))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
这里实现了矩阵到转置。*是解包,但是具体含义是什么?实验如下:
>>> list(*matrix)
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
list(*matrix)
TypeError: list() takes at most 1 argument (3 given)
推测:*matrix实际作用相当于把[(1, 4, 7), (2, 5, 8), (3, 6, 9)]变为了三个参数:(1, 4, 7), (2, 5, 8), (3, 6, 9)。
为了进一步说明,看如下代码:
>>> zip((1,4),(2,5),(3,6))
<zip object at 0x01082738>
>>> list(_)
[(1, 2, 3), (4, 5, 6)]
此段,与list(zip(*matrix))有类似到处理过程.所以推测应该是正确的。
二.模块导入
编写自己的模块后,比如fibo.py,存在自己的一个目录下:E:\MyPythonCd
若要用这个模块,则需要告诉解释器模块的路径:
import sys
sys.path.append('E:\MyPythonCd')