Python的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號。
定義
#方法一
>>> a='q',123,"qw"
>>> a
('q', 123, 'qw')
#方法二
>>> a=('q',123,"qw")
>>> a
('q', 123, 'qw')
元組也是一種序列,這一點與列表,字符串類似。特點就是其中的元素不能改。而且單個元素的元組後面要加“,”纔可以,否則會當成運算符使用。
>>> a=(9)
>>> a
9
>>> type(a)
<class 'int'>
>>> a=(9,)
>>> a
(9,)
>>> type(a)
<class 'tuple'>
>>> a[0]
9
>>> a[0]=1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
因此識別元組最重要的標誌是,
。
a = 1,
#output
(1,)
在索引上元組有着列表和字符串一樣的操作:
>>> a=(1,'asd',['a',1],('c',))
>>> a[1]
'asd'
>>> a[1:]
('asd', ['a', 1], ('c',))
>>> a[2][1]
1
元組和列表間的轉換
列表和元組之間可以實現轉化,分別使用list()和tuple()實現。
>>> a
(1, 'asd', ['a', 2, 3, 6, 1], ('c',))
>>> b=list(a)
>>> b
[1, 'asd', ['a', 2, 3, 6, 1], ('c',)]
>>> tuple(b)
(1, 'asd', ['a', 2, 3, 6, 1], ('c',))
元組真的不可以改變嗎?
在寫博客中遇到過下班這些問題,正如大衆所知的,元組並不能改變,比如:
>>> a=(1,'asd',['a',1],('c',))
>>> a[1]=3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
但是如果我們改變元組中的a[2]元素會怎麼樣呢?
>>> a[2]=[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
發現也還是改變不了,但是如果改變a[2,1]呢?
>>> a[2][1]=3
>>> a
(1, 'asd', ['a', 3], ('c',))
是不是覺得很不可思議,元組居然改變了,類似的情況還有下面這些…
>>> a=(1,'asd',['a',1],('c',))
#雖然顯示'tuple'對象不支持項目分配,但還是改變了
>>> a[2]+=[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> a
(1, 'asd', ['a', 1, 3], ('c',))
# 通過extend修改元組
>>> a[2].extend([3])
>>> a
(1, 'asd', ['a', 3, 3], ('c',))
#通過append修改元組
>>> a[2].append(3)
>>> a
(1, 'asd', ['a', 1, 3, 3, 3], ('c',))
由於博主能力有限,目前還不知道爲什麼可以這樣,因此寫下來以便日後解答。