我在学习Python,基于下面的列表,我想根据几个不同的条件进行过滤,并结合结果。你知道吗
list_of_stuff = [
"aus-airport-1",
"aus-airport-2",
"us-airport-1",
"us-airport-2",
"aus-ship-1",
"us-ship-99",
"nz-airport-1"
]
程序应允许用户:
下面是对我的想法的模仿,我确信一定有一个更好的模式,比如map、filter、reduce,甚至是内置的filter,所以希望能对如何改进有所帮助。程序将接受和用户输入,并且仅在指定筛选器类型时进行筛选。例如,列出物品的清单—排除地区nz—运输船。你知道吗
我的模拟尝试
def filter_transport(stuff,transport):
if transport:
if stuff.split("-")[1] == transport:
return True
else:
return False
else:
return True
def exclude_region(stuff,region):
if region:
if stuff.split("-")[0] ==region:
return True
else:
return False
def included_region(stuff,region):
if region:
if stuff.split("-")[0] ==region:
return True
else:
return False
else:
return True
def filters(stuff,transport=None,include_region=None,excluded_region=None):
if( filter_transport(stuff,transport) and
included_region(stuff,include_region) and not exclude_region(stuff,excluded_region) ):
return True
#give all airports excluding nz
stuff = [stuff for stuff in list_of_stuff if filters(stuff,transport="airport",excluded_region="nz")]
print (stuff)
#give all airports in aus
stuff = [stuff for stuff in list_of_stuff if filters(stuff,transport="airport",include_region="aus")]
print (stuff)
#give all ships
stuff = [stuff for stuff in list_of_stuff if filters(stuff,transport="ship")]
print (stuff)
您可以filter您的列表:
Check results:
您可以使用三种直接的列表理解:
这样怎么样:
相关问题 更多 >
编程相关推荐