2013-10-18 41 views
0

python如何初始化元組對象? 例如,當創建像python str和元組對象的區別

>>> object = ('Shark') 

一個目的它示出了如str

>>> type(object) 
<type 'str'> 

雖然對象的類型,如果我創建像

>>> object = ('Shark',) 

一個目的它顯示它的類型作爲tuple

>>> type(object) 
<type 'tuple'> 

爲什麼這樣? python如何創建/初始化一個元組,str對象?

+7

你基本上已經有了答案:它是逗號,而不是圓括號。 – BrenBarn

+0

你可以閱讀更多[這裏](http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange) – Matt

回答

3

docs

一個特殊的問題是含有0或1 項目的元組的結構:語法上有一些額外,以適應這些。空 元組由一對空括號構成; 一個包含 的元組一個元素的值是用逗號(它不是 足以將括起來的單個值括起來)的值構成。

所以,沒有尾隨,這兩個語句是等價的:

>>> x = 1 
>>> x 
1 
>>> x = (1) 
>>> x 
1 

但這些都是tuples

>>> x = 1,  #or (1,) 
>>> x 
(1,) 
>>> x = 1, 2, 3 #or (1, 2, 3) 
>>> x 
(1, 2, 3) 
1

封閉在括號的表達式就是這樣表達(它像在數學表達式中的父親,如(2+2)*4)。

但是,如果添加尾隨逗號,或者逗號分隔的多個元素中有多個元素,則它將成爲元組。另外,如果你寫(),你將得到一個空元組。

1

在雙引號或單引號內的任何內容都將被視爲Python中的字符串。兩者之間沒有區別 - 就像在PHP中一樣,雙引號字符串中的變量實際上將被評估,而單引號將按原樣顯示。

封閉在左括號和右括號內的任何內容都將被視爲元組。但是,如果只有一個對象被放置在元組中,它將被視爲對象的類型。例如:

>>> a = (9) 
>>> type(a) 
<class 'int'> 
>>> 
>>> a = ([9]) 
>>> type(a) 
<class 'list'> 
>>> 
>>> a = ('hello!') 
>>> type(a) 
<class 'str'> 
>>> 
>>> a = {'a':1, 'b':1} 
>>> type(a) 
<class 'dict'> 
>>> 

請注意,對象的長度並不重要(放置在元組內部的對象,而不是元組本身)。

現在,如果要在元組內部放置一個逗號,Python將假定還有另一個對象來了,它會將它看作是元組,並且不是會給出錯誤。另外,請注意,Python用來存儲一些東西的默認對象也是一個元組,這意味着即使您沒有在括號中包含表達式,它也會默認爲您執行此操作:

>>> a = 9, 8, 7 
>>> a 
(9, 8, 7) 
>>> type(a) 
<class 'tuple'> 
>>> 
>>> a = 'Hello', 'Python', 'Typle' 
>>> a 
('Hello', 'Python', 'Typle') 
>>> type(a) 
<class 'tuple'> 
>>> 
相關問題