相当于Ruby的.select的Python
问题内容:
我有一个列表/数组,让我们叫它x
,我想创建一个新的列表/数组,让我们z
从x
符合特定条件的元素中调用这个。
在Ruby中,您可以通过在列表/数组上调用.select方法来做到这一点,如下所示:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
z = x.select{|a| a < 5}
之后,z
将如下所示:
z = [1, 2, 3, 4]
Python中是否有可以用来获得相同效果的函数/方法?
如果没有,我能做的最干净的方法是什么?
问题答案:
Python具有内置filter
功能:
lst = [1, 2, 3, 4, 5, 6]
filtered = filter(lambda x: x < 5, lst)
但是列表理解可能会更好,尤其是与地图操作结合使用时:
mapped_and_filtered = [x*2 for x in lst if x < 5]
# compare to:
mapped_and_filtered = map(lambda y: y*2, filter(lambda x: x < 5, lst))