ang*_*lar 8 python loops composite
我希望有一个包装和对象在一个可迭代的函数,以允许该函数的客户端对待集合和单个对象相同的方式,我做了以下内容:
def to_iter(obj):
try:
iter(obj)
return obj
except TypeError:
return [obj]
Run Code Online (Sandbox Code Playgroud)
有没有一种pythonic的方法来做到这一点?如果obj是一个字符串,我想处理的字符串作为单个对象?我应该使用isinstance代替iter?
你的方法很好:它会将一个字符串对象转换为一个可迭代的
try:
iter(obj)
except TypeError, te:
obj = list(obj)
Run Code Online (Sandbox Code Playgroud)
您可以检查的另一件事是:
if not hasattr(obj, "__iter__"): #returns True if type of iterable - same problem with strings
obj = list(obj)
return obj
Run Code Online (Sandbox Code Playgroud)
要检查字符串类型:
import types
if not isinstance(obj, types.StringTypes) and hasattr(obj, "__iter__"):
obj = list(obj)
return obj
Run Code Online (Sandbox Code Playgroud)