Я часто нахожу удобным внутри своих скриптов определение функции iterable
. (Теперь включает предложенное Alfe упрощение):
import collections
def iterable(obj):
return isinstance(obj, collections.Iterable):
, чтобы вы могли проверить, является ли какой-либо объект итерируемым в очень читаемой форме
if iterable(obj):
# act on iterable
else:
# not iterable
, как вы это делали бы с callable
function
EDIT: если у вас установлен numpy, вы можете просто сделать: из numpy import iterable
, что просто что-то вроде
def iterable(obj):
try: iter(obj)
except: return False
return True
Если у вас нет numpy, вы может просто реализовать этот код, или тот, что указан выше.