我想有一个函数,该函数将对象包装在一个可迭代的对象中,以便允许
该函数的客户端对待集合和单个对象的方式相同,我做了以下工作:
def to_iter(obj):
try:
iter(obj)
return obj
except TypeError:
return [obj]
有没有pythonic的方法可以做到这一点?如果
obj
是一个字符串,而我想将字符串视为单个对象?我应该使用
isinstance
而不是iter
吗? 最佳答案
您的方法很不错:尽管它将字符串对象转换为可迭代对象
try:
iter(obj)
except TypeError, te:
obj = list(obj)
您可以检查的另一件事是:
if not hasattr(obj, "__iter__"): #returns True if type of iterable - same problem with strings
obj = list(obj)
return obj
要检查字符串类型:
import types
if not isinstance(obj, types.StringTypes) and hasattr(obj, "__iter__"):
obj = list(obj)
return obj