我正在尝试过滤返回特定属性列表的对象。看看我试过的:
class Foo:
def __init__(self,a,b):
self.a = a
self.b = b
x = Foo(1,2)
y = Foo(1,3)
z = Foo(2,4)
result = filter(lambda f: f.b if f.a == 1 else None, [x,y,z])
print(list(result))
Run Code Online (Sandbox Code Playgroud)
我期待这样的列表[2, 3],但它返回给我一个foo对象列表。有没有办法只使用filter其他功能来做到这一点?例如,我想避免使用map和filter。
您可以使用列表理解
result = [i.b for i in [x,y,z] if i.a == 1]
Run Code Online (Sandbox Code Playgroud)
使用filter它需要两个步骤:一个是过滤掉对象所在的位置i.a != 1,第二个是.b从每个对象中拉出(这需要map)。
| 归档时间: |
|
| 查看次数: |
2040 次 |
| 最近记录: |