我有一个类属性,它可以是一个字符串或字符串列表。我想将其转换成一个元组使得列表正常转换,但一个字符串变成一个单项元组:字符串列表或字符串的元组
[str, str] --> (str, str)
str --> (str,)
不幸的是tuple('sting')
回报('s', 't', 'r', 'i', 'n', 'g')
这不是我所期望。没有类型检查可以做到吗?
我有一个类属性,它可以是一个字符串或字符串列表。我想将其转换成一个元组使得列表正常转换,但一个字符串变成一个单项元组:字符串列表或字符串的元组
[str, str] --> (str, str)
str --> (str,)
不幸的是tuple('sting')
回报('s', 't', 'r', 'i', 'n', 'g')
这不是我所期望。没有类型检查可以做到吗?
类型检查,将是实现这一目标的最佳方式。你会如何决定输入是列表还是字符串?
你可以做,如果输入的是一个列表或者一个字符串,它测试,并适当地返回,并在您认为合适处理剩下的一个功能。沿
>>> def convert_to_tuple(elem):
if isinstance(elem, list):
return tuple(elem)
elif isinstance(elem, basestring):
return (elem,)
else:
# Do Something
pass
>>> convert_to_tuple('abc')
('abc',)
>>> convert_to_tuple(['abc', 'def'])
('abc', 'def')
线的东西你可以只检查字符串也
>>> def convert_to_tuple(elem):
if isinstance(elem, basestring):
return (elem,)
else:
return tuple(elem)
>>> convert_to_tuple('abc')
('abc',)
>>> convert_to_tuple(('abc', 'def'))
('abc', 'def')
>>> convert_to_tuple(['abc', 'def'])
('abc', 'def')
(假设的Python 2.x中,与PY 3 str
更换basestring
)的功能转换为一个衬垫有可能太。
>>> def convert_to_tuple(elem):
return (elem,) if isinstance(elem, basestring) else tuple(elem)
您要求根据值的类型进行操作。根据定义,这需要某种形式的类型检查。 – Eric