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