為什么元組只有單個元素時加逗號結尾?


2019-06-01  14:36:34

用交互式輸入:

>>> yz=(1)
>>> yz
1
>>> yz1=(1,)
>>> yz1
(1,)

發現沒有以逗號結尾也可以創建並輸出不過前者輸出是整數1,后者輸出是元組(1,)。難道前者沒有創建一個元組嗎?我們來檢查上面兩個“元組”得到類型:

>>> type(yz)
<class 'int'>
>>> type(yz1)
<class 'tuple'>

這回我們發現前者yz只是一個整型變量,而后者yz1才是一個元組。這是因為符號()是一個運算符,當括號中只有數字時並不會創建一個元組。而且元組之間可以進行加法運算(僅此而且)如

>>> yz=(1)
>>> yz1=(1,)
>>> yz2=(1,2)
>>> yz+yz2
Traceback (most recent call last):
  File "<pyshell#89>", line 1, in <module>
    yz+yz2
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
>>> yz1+yz2
(1, 1, 2)

從錯誤類型中我們也可以看出yz是一個整型數據。

所以說創建的元組中只有一個元素時沒有加逗號就無法創建為元組,而為其他變量,如:

>>> x=([1])
>>> type(x)
<class 'list'>
>>> y=([1],)
>>> type(y)
<class 'tuple'>
>>> type(y[0])
<class 'list'>
>>> z=({'man':'men'})
>>> z
{'man': 'men'}
>>> type(z)
<class 'dict'>
>>> z=({'man':'men'},)
>>> type(z)
<class 'tuple'>
>>> z
({'man': 'men'},)
>>> z[0]
{'man': 'men'}
>>> z[0][0]
Traceback (most recent call last):
  File "<pyshell#116>", line 1, in <module>
    z[0][0]
KeyError: 0
>>> z[0]['man']
'men'
>>> type(z['man'])
<class 'str'>
>>> z['man']
men


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM