單例元組之謎及其字串轉換
當使用單一元素建立元組時,您可能希望它保留其元組自然。然而,在Python中,會出現一種奇怪的行為。
問題:
考慮以下程式碼:
a = [('a'), ('b'), ('c', 'd')]
令人驚訝的是,當你列印a中每個元素的類型,您將得到以下輸出:
['a', 'b', ('c', 'd')] <type 'str'> <type 'str'> <type 'tuple'>
Why前兩個元素,儘管被括在括號中,是否表現得像字串而不是元組?
答案:
關鍵在於理解元組的 Python 語法。單獨的括號不會建立具有單一元素的元組。為此,您必須在元素後面添加逗號。這個差異如下:
type(('a')) # A string type(('a',)) # A tuple
要修正程式碼範例,請在單元素字串後面加上逗號:
a = [('a',), ('b',), ('c', 'd')]
原因:
根據Python文檔,空元組和包含單一項目的元組具有獨特的語法要求。空元組是使用一對空括號建立的,而具有單一項目的元組需要一個值後面跟著一個逗號。
規避:
如果您發現尾隨逗號不美觀,您可以透過將清單傳遞給tuple() 來建立包含單一元素的元組功能:
x = tuple(['a'])
以上是為什麼 Python 將 `('a')` 視為字串,而不是元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!