python編程基礎——基本數據類型之元組


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',))

由於博主能力有限,目前還不知道爲什麼可以這樣,因此寫下來以便日後解答。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章