所以我试着这样做.
a = []
map(lambda x: a.append(x),(i for i in range(1,5)))
Run Code Online (Sandbox Code Playgroud)
我知道map有一个函数但是为什么它不会附加到列表中呢?或者追加不是功能?但是打印a结果a仍然是空的
现在有趣的是这是有效的
a = []
[a.append(i) for i in range(5)]
print(a)
Run Code Online (Sandbox Code Playgroud)
是不是他们基本上"说"同样的事情?
这几乎就好像列表理解成为某种混合列表理解功能的东西
那么为什么lambda和map方法不起作用呢?
我假设你使用的是Python 3.x,你的map()代码不起作用的实际原因是因为在Python 3.x中,map()返回一个生成器对象,除非你迭代map返回的生成器对象(),不调用lambda函数.尝试做清单(地图(...)),你应该看到一个填补.
话虽这么说,你正在做的事情没有多大意义,你可以使用 -
a = list(range(5))
Run Code Online (Sandbox Code Playgroud)
append()返回None所以与map函数结合使用它是没有意义的.一个简单的for循环就足够了:
a = []
for i in range(5):
a.append(i)
print a
Run Code Online (Sandbox Code Playgroud)
或者如果你想使用list comprehensions/map函数;
a = range(5) # Python 2.x
a = list(range(5)) # Python 3.x
a = [i for i in range(5)]
a = map(lambda i: i, range(5)) # Python 2.x
a = list(map(lambda i: i, range(5))) # Python 3.x
Run Code Online (Sandbox Code Playgroud)
[a.append(i) for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
上面的代码也会附加,但它也会创建一个None值列表,因为它的大小range(5)完全是浪费内存.
>>> a = []
>>> b = [a.append(i) for i in range(5)]
>>> print a
[0, 1, 2, 3, 4]
>>> print b
[None, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6468 次 |
| 最近记录: |