我有一個類屬性,它可以是一個字符串或字符串列表。我想將其轉換成一個元組使得列表正常轉換,但一個字符串變成一個單項元組:字符串列表或字符串的元組
[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