def do_something_with_maybe_list(maybe_list):
if maybe_list:
for x in list:
do_something(x)
else:
do_something_else()
do_something_with_maybe_list(get_list())
你甚至可以提取的行动来完成:
从奥利
def do_something_with_maybe_list(maybe_list, process_item, none_action):
if maybe_list:
for x in list:
process_item(x)
else:
none_action()
do_something_with_maybe_list(get_list(), do_something, do_something_else)
do_something_with_maybe_list(get_otherlist(), do_other, do_still_other)
编辑:或者去一个进一步:
def do_something_with_maybe_list(maybe_list, process_item, none_action):
if maybe_list:
return process_list(maybe_list)
return none_action()
do_something_with_maybe_list(get_list(), do_something, do_something_else)
do_something_with_maybe_list(get_otherlist(), do_other, do_still_other)
我不确定任何事情**可能会更容易。这有什么问题?您想要消除哪一行代码? – 2009-10-07 12:54:37
呃...理想情况下,我想停止将列表分配给变量,并将if/else压缩为for的一部分(我知道这不太可能)。我可以使用'get_list()作为列表:',但是这会将事情推得更远 – Oli 2009-10-07 12:57:13
@Oli:请不要评论你自己的问题。请*更新*您的问题与其他细节。 – 2009-10-07 12:59:44