1
ipwx 2018-05-09 15:10:47 +08:00 1
|
2
invoke 2018-05-09 15:12:09 +08:00 1
这不是销毁了。。
建议楼主 test = map(lambda....) for i in test 两次尝试一下 |
3
hourann 2018-05-09 15:21:38 +08:00 via iPhone
是新特性。generator 了解一下。python3 的很多迭代工具都改为惰性求值,意思是用到的时候再求值,而不是一次性算完了然后放在内存里。如果楼主不适应,可以外面加个 list,list(map(…)),就把所有值都求出来放到一个列表里了
|
4
fankcoder OP 感谢,之前没在意这个
|
5
orangeade 2018-05-09 15:26:54 +08:00 via Android
|
6
qianc1990 2018-05-09 16:20:11 +08:00
迭代器我知道, 可是为什么是这样子的呢?
|
7
shuizhengqi 2018-05-09 16:24:14 +08:00
迭代器只运行一次
|
8
suber 2018-05-09 16:57:38 +08:00
这是 Python3 的 map 不一样。2 返回的是一个 list ;而 3 是返回一个 iterator,并且这个结果是 yield 的。
https://docs.python.org/3/library/functions.html#map |
9
congeec 2018-05-10 01:51:11 +08:00 via iPhone
注意生成器和迭代器不是一个东西
|
10
lfzyx 2018-05-10 10:05:52 +08:00
麻烦用列表推导来替代 map
|
11
lfzyx 2018-05-10 10:07:08 +08:00
test = [x for x in range(2)]
|
12
ArianX 2018-05-10 10:31:00 +08:00 via Android
这是生成器吧
|