如果你想写
$ python life.py 0101010,0101010,0101010
那么你需要来自sys 模块的argv 向量,它包含命令行中的所有元素,然后是一个简单的列表理解
用逗号分割第一个参数,因此矩阵的rows(请注意,这些行是字符串),然后构建一个子列表来转换一行中的每个字符
from sys import argv
...
life = np.array([[int(c) for c in r] for r in argv[1].split(',')])
为了详细显示过程,使用辅助变量代替argv[1]
In [46]: m = '0101010,0101010,0101010'
In [47]: [r for r in m.split(',')]
Out[47]: ['0101010', '0101010', '0101010']
In [48]: [[c for c in r] for r in m.split(',')]
Out[48]:
[['0', '1', '0', '1', '0', '1', '0'],
['0', '1', '0', '1', '0', '1', '0'],
['0', '1', '0', '1', '0', '1', '0']]
In [49]: [[int(c) for c in r] for r in m.split(',')]
Out[49]: [[0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0]]
In [50]: np.array([[int(c) for c in r] for r in m.split(',')])
Out[50]:
array([[0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0]])
In [51]: