python 數據類型 - tuple

tuple 元組

今天跟你們分享一下Python裏面tuple數據類型的學習
ps:list數據類型,以前是寫在了jianshu上,暫時我也尚未搬過來,因此貼上連接吧 python

Python數據類型 - list : https://www.jianshu.com/p/5fe...安全


概念

tuple,即元組。是Python內置的一種有序列表。跟list相比,tuple有比較特別的地方。app

  • tuple不可變,一旦初始化定義後就不能修改。因此在定義的時候,元素值最好就肯定下來。
  • tuple獲取元素的方法與list一致。可是它沒有append()、insert()等方法。

那tuple有什麼好處呢?由於不可變,因此代碼更加安全。若是能夠,儘可能用tuple代替list。函數


1、tuple定義

一、 定義一個空tuple

t = ()
    t  # 調用
    輸出:()

二、 定義一個只有一個元素的tuple

以下示例,注意比較「t」與「s」的區別,經過type()函數也能夠清楚的看到。學習

>>> t = ('xyz')
>>> t
'xyz'
>>> type(t)
<class 'str'>
>>>
>>> s = ('abc',)
>>> s
('abc',)
>>> type(s)
<class 'tuple'>
>>>

ps:原本貼的圖片,發現不方便看 -_-spa

  • 注意哦,必需要添加一個逗號「,」,來消除歧義。

三、定義一個多個元素的tuple

t = (1,2,'abc')
    t # 調用
    輸出:(1,2,'abc')

2、「可變的」tuple

  • 剛纔說tuple不可變,如今爲什麼說「可變」呢?試想tuple裏的元素是list類型時。

>>> t = ('a','b',['c','d'])       # tuple裏包含可變的list
>>> t [2][0]
'c'
>>> t[0][1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> t [2][0] = 'C'                # 修改tuple中的list類型值
>>> t
('a', 'b', ['C', 'd'])
>>> t[0][0] = 'e'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

塊一中修改tuple中list的元素,tuple沒有變,變的是list的元素。
tuple一開始指向的list並無改變成別的list,id(list)沒有變化。因此,tuple所謂的「不變」,是說tuple的每一個元素指向永遠不變,可是指向的list內容是可變的。code

  • 另外一種方法改變tuple

>>> h = ('a','b','c')
>>> h1 = ('A',) + h[1:]  # 用slice方法取得列表的一部分,實際上是從新給對象賦值
>>> h1
('A', 'b', 'c')

3、序列賦值

(1)Python中,tuple類型爲默認的集合類型

Python中,賦值能夠採用序列賦值的方式,以下對象

>>>a,b = 1,2
>>>a,b
>>>(1,2)

clipboard.png

(2)tuple序列做爲函數默認的返回值類型,全部不包括符號封裝的函數返回值都是元組類型

python函數返回值是一個tuple類型的值。返回值爲一個時,括號省略;返回值爲多個時,爲同一個tuple接收,並把位置賦給相應的值。
若要返回一個list類型,則顯示用「[]」進行修改。排序

def swap(x,y):
    return y,x        # return [y,x] 或者 return(y,x)
>>> swap(2,3)
(3, 2)

4、tuple的函數操做

(1) 兩個元組的合併操做

  • 兩個tuple鏈接操做:tuple_a + tuple_b
  • tuple乘操做:tuple_a * int_number

實際效果以下圖:
clipboard.png教程

(2) in操做符

判斷元素i是否在tuple_a中,返回True or False。

if i in tuple_a :
    <action>

(3) 訪問元組元素

經過切片來訪問元組的元素,它的切片操做跟列表list是同樣,也是經過「切片操做符[]」+索引index來訪問。

(4) 一些內建函數

  • len():
  • max():
  • min():
  • str():類型轉換爲string
  • list():類型轉換爲list
  • operator模塊:能夠調用裏面的比較操做函數、邏輯操做函數、數學操做函數等,感興趣的能夠去看看operator.py文件源碼,或者官網教程哦~

(5) 比較操做符

元組還能夠進行一些比較操做符的操做,好比「>」、「<」、「==」等,跟數學裏同樣,對應元素值跟對應元素值進行比較,返回True或者False。
「大於」和「小於」只能比較同類型的tuple,以下示例:

>>> a = (1,2)
>>> b = ('a','b')
>>> c = (1,2,3)
>>> a > b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'int' and 'str'
>>>
>>> a == c
False

你們能夠隨意去操做一下,就能清楚了,不算是重點。


有小夥伴能告訴我,專欄裏的文章如何改變排序嗎?

相關文章
相關標籤/搜索