最近在和同学写课上的group project,我在做code review的时候发现某个程序用这样一句话去把一个array中的数据写入到文本
```
map(lambda x: fp.write(",".join(map(str, x)) + "\n"), phi_matrix)
```
首先这个代码看懂没问题,但是我个人感觉在这样的情况下不应该用map去写这句话吧?
原因:
1. map首先是有返回值的,向这位同学这样写的话等于创建了一个无用的list,然后直接丢弃,如果不用的话为什么还要浪费资源去创建呢?
2. 因为有lambda的存在,每次iterate 都想当等于call 一次function,这个也严重减慢了程序的运行速度吧?
改成下面这样应该会比较好很多。
```
fp.write(",".join(map(str, i)) + "\n") for i in phi_matrix
```
那么问题了,
目前有没有一个内置的函数可以实现如上这样的code呢?换句话说就是把上面这样的code包装成函数形式。类似
```
xxxxx(lambda x: fp.write(",".join(map(str, x)) + "\n"), phi_matrix)
```
如果包装成了函数形式,那么上面的第2个不适用因素还是会存在吧?因为这样也用了lambda。
```
map(lambda x: fp.write(",".join(map(str, x)) + "\n"), phi_matrix)
```
首先这个代码看懂没问题,但是我个人感觉在这样的情况下不应该用map去写这句话吧?
原因:
1. map首先是有返回值的,向这位同学这样写的话等于创建了一个无用的list,然后直接丢弃,如果不用的话为什么还要浪费资源去创建呢?
2. 因为有lambda的存在,每次iterate 都想当等于call 一次function,这个也严重减慢了程序的运行速度吧?
改成下面这样应该会比较好很多。
```
fp.write(",".join(map(str, i)) + "\n") for i in phi_matrix
```
那么问题了,
目前有没有一个内置的函数可以实现如上这样的code呢?换句话说就是把上面这样的code包装成函数形式。类似
```
xxxxx(lambda x: fp.write(",".join(map(str, x)) + "\n"), phi_matrix)
```
如果包装成了函数形式,那么上面的第2个不适用因素还是会存在吧?因为这样也用了lambda。
