Dar*_*ary 4 python lambda list filter
我正在读书filter,lambda而且map.当我尝试使用它们时,我发现了这个特点:
def returnAsIs(element):
return element
print range(10)
print filter(returnAsIs, range(10))
print map(lambda x : x, range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
为什么过滤器省略了第一个条目?
为什么0跳过元素filter()?
发生这种情况是因为价值0评估为False.
从iterable的那些元素构造一个列表,该函数返回true.
因此,当我们应用于filter(function, iterable)a时iterable,只返回函数返回的那些元素True.
当Python迭代元素0时9,它会检查哪个元素的计算结果True只返回那些元素.现在,0进行求值,False以便不返回此值filter().只有从分子1到9返回.
如何检查元素的布尔值?
由于您的函数按原样返回元素,因此我们需要检查哪些元素的计算结果True.只返回那些评估为的元素True.
要检查布尔值,我们可以使用该bool() 函数.
In [1]: for x in range(10):
...: print x, bool(x)
...:
0 False # boolean-ness of '0' is False
1 True
2 True
3 True
4 True
5 True
6 True
7 True
8 True
9 True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |