2024-03-28 21:53:26 发布
网友
我有一个say foos对象的列表。 我有一个创建新列表的循环。在
foo1 = {id:1,location:2} 例如foos = [foo1,foo2,foo3]
foo1 = {id:1,location:2}
foos = [foo1,foo2,foo3]
现在我想创建一个基于位置的新列表。在
new_list = [] for foo in foos: if foo.location==2: new_list.append(foo)
我想知道的是,有没有什么方法可以让我做这样的事情
我可以在这里使用地图功能吗?如果是怎么回事?在
List comprehension似乎是您要使用的:
new_list = [foo for foo in foos if foo.location == 2]
当您想将函数应用于列表中的每个项(或任何iterable)并得到一个等长的列表(或Python3中的迭代器)时,map是很好的。它不能基于某些条件“跳过”项目。在
map
使用lambda函数与过滤器绑定 例如
a = {'x': 1, 'location': 1} b = {'y': 2, 'location': 2} c = {'z': 3, 'location': 2} d=[a,b,c]
根据你的例子d将是
结果应该是
[{'y': 2, 'location': 2}, {'z': 3, 'location': 2}]
我希望这是你所期待的。。。在
当然可以用函数来实现。您可以使用filterbuiltin function:
filter
new_list = filter(lambda foo: foo.location == 2, foos)
但更普遍的“Python式”方法是使用list comprehensions
List comprehension似乎是您要使用的:
当您想将函数应用于列表中的每个项(或任何iterable)并得到一个等长的列表(或Python3中的迭代器)时,
map
是很好的。它不能基于某些条件“跳过”项目。在使用lambda函数与过滤器绑定 例如
根据你的例子d将是
^{pr2}$结果应该是
我希望这是你所期待的。。。在
当然可以用函数来实现。您可以使用
filter
builtin function:但更普遍的“Python式”方法是使用list comprehensions
^{pr2}$相关问题 更多 >
编程相关推荐