注意:
我刚刚测试了一下,最新版本的numpy.array的构造函数有变化,不再支持使用np.array(2**e for L)的方式生成numpy数组。具体参见这个问答:https://coding.imooc.com/learn/questiondetail/47727.html
以下回答是原回答,解释 2**e for L 和 [2**e for L]的区别。
----------
2**e for e in L 这句话返回的是"生成器"(generator objects);
[2**e for e in L] 返回的是列表(list)。这句话本质是根据一个生成器创造了一个列表。
可以打印出二者的type验证一下:
print(type(i for i in range(100)))
print(type([i for i in range(100)]))
np.array(2**e for e in L) 是根据一个迭代器创建了一个numpy的数组;(该方式在最新版本的numpy中已经取消)
np.array([2**e for e in L]) 是根据一个列表创建了一个numpy的数组。