2013-12-14 73 views
8

請看下面的例子:爲什麼Python將一個元素作爲一個整數對待元組?

(1) #outputs 1 

但是如果我添加逗號,它會根據Python文檔是正確的:)

(1,) #output (1,) 

這是超級奇怪了吧。任何人都可以解釋嗎?

一個相關的問題:Python是否沒有辦法知道(1)應該是一個元組(1)而不是1?

感謝您的回覆。

+1

也許是因爲Python認爲'(1)'是一個公式,如'(1 + 0)'? –

+0

'(2 + 0)'應該如'1 /(2 + 0)'那樣對待,一個元組? – thefourtheye

+0

想你,我明白了:) – user2228392

回答

18

實際上,它是創建元組的逗號;括號僅在其他情況下會有歧義的情況下才是必要的。畢竟,括號可以用於分組及:

>>> 1, 2 
(1, 2) 
>>> 1, 
(1,) 
>>> (1) 
1 
>>> 2 * 3, 4 
(6, 4) 
>>> 2 * (3, 4) 
(3, 4, 3, 4) 
>>> 1, + (2, 3) * 4 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: bad operand type for unary +: 'tuple' 
>>> (1,) + (2, 3) * 4 
(1, 2, 3, 2, 3, 2, 3, 2, 3) 
+0

這是有幫助的。我明白了:)謝謝 – user2228392

相關問題