爲了方便起見,我想通過一個函數傳遞一個值,一個列表或一個遍歷多個值的迭代器。理想情況下,有一種方法可以從單個項目生成迭代器,以便一個循環可以容納所有三種變體。如何迭代單個或多個項目?
def flexible_func(param):
for x in mystery_wrapper(param):
do_something(x)
flexible_func('single')
flexible_func(['one', 'two'])
flexible_func(generator)
這是我最後用去:
from collections import Iterable
def iterate(seq_or_single):
if isinstance(seq_or_single, Iterable) and not isinstance(seq_or_single, basestring):
return seq_or_single
return [seq_or_single]
# for x in iterate(param):
你能指望什麼發生,如果參數是一個字符串? –
@gnibbler,哈!好的問題 - 對於我的具體用例,我想將字符串視爲單個參數。但我願意接受將其視爲可迭代字符序列的答案。 –
我懷疑這是否是一個很好的決定來實現這樣的功能。 – zhangyangyu