我有一个说foos的对象列表.我有一个创建新列表的循环.
foo1 = {id:1,location:2}
例如 foos = [foo1,foo2,foo3]
现在我想根据位置创建一个新列表.
new_list = []
for foo in foos:
if foo.location==2:
new_list.append(foo)
Run Code Online (Sandbox Code Playgroud)
我想知道的是有什么办法我可以做这样的事情
new_list = []
new_list = map(if foo.location ==2,foos) // this is wrong code but is something like this possible. ?
Run Code Online (Sandbox Code Playgroud)
我可以在这里使用地图功能吗?如果有,怎么样?
当然,你可以用功能做到这一点.你可以使用filter 内置函数:
new_list = filter(lambda foo: foo.location == 2, foos)
Run Code Online (Sandbox Code Playgroud)
但更普遍和"pythonic"的方式是使用列表推导
new_list = [foo for foo in foos if foo.location == 2]
Run Code Online (Sandbox Code Playgroud)
列表理解似乎是你想要使用的:
new_list = [foo for foo in foos if foo.location == 2]
Run Code Online (Sandbox Code Playgroud)
map当你想要一个函数应用于列表中的每个项目(或任何可迭代的)并获得一个相等长度的列表(或Python3中的迭代器)时,这是很好的.它不能根据某些条件"跳过"项目.
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |