[PY3]——內建資料結構(2)——元組及其常用操作

Jelly_lyj發表於2017-03-18

定義和初始化

#tuple()          使用工廠函式tuple定義一個空元組

#()               使用圓括號定義一個空元組

#(1,2,3)          使用圓括號定義有初始值的元組

#tuple(可迭代物件)  把可迭代物件轉換為一個元組

In [1]: tup=tuple();print(tup)
()

In [2]: tup=();print(tup)
()

In [3]: tup=(1,2,3);print(tup)
(1, 2, 3)

In [5]: tup=tuple(range(0,2));print(tup)
(0, 1)

#要定義一個只有1個元素的tuple,如果這麼定義:
In [30]: tup=(1)
In [31]: type(tup)
Out[31]: int  
#定義的不是tuple,是1這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。 #所以只有1個元素的tuple定義時必須加一個逗號,,來消除歧義 In [32]: tup=(1,) In [33]: type(tup) Out[33]: tuple In [34]: print(tup) (1,) # Python在顯示只有1個元素的tuple時,也會加一個逗號,,以免誤解成數學計算意義上的括號

 

元組是不可修改的

 

訪問元組元素

1. 通過索引訪問元素

In [7]: t=tuple(range(0,7));print(t)
(0, 1, 2, 3, 4, 5, 6)

In [8]: t[1]
Out[8]: 1

In [9]: t[-1]
Out[9]: 6

2. index()

In [21]: help(t.index)
index(...) method of builtins.tuple instance
    T.index(value, [start, [stop]]) -> integer -- return first index of value.
    Raises ValueError if the value is not present.

In [16]: print(t)
(1, 2, 3, 2, 6)

In [17]: t.index(2)
Out[17]: 1

In [20]: t.index(2,1,3)
Out[20]: 1

3. count()

In [21]: help(t.count)
count(...) method of builtins.tuple instance
    T.count(value) -> integer -- return number of occurrences of value

In [22]: t.count(2)
Out[22]: 2

 

命名元組 nametuple

# namedtuple('名稱', [屬性list]):
# namedtuple是一個函式,它用來建立一個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。
# 這樣一來,我們用namedtuple可以很方便地定義一種資料型別,它具備tuple的不變性,又可以根據屬性來引用,使用十分方便。

# 例如我們可以使用namedtuple來表示座標:
In [35]: from collections import namedtuple

In [36]: Circle=namedtuple('Circle',['x','y','z'])

In [37]: C=Circle(2,2,3)

In [38]: print(C.x);print(C.z)
2
3

# 建立的Circle物件是tuple的一種子類
In [39]: isinstance(C,Circle)
Out[39]: True

In [40]: isinstance(C,tuple)
Out[40]: True

# 所以C完全可以當做元組去使用
In [46]: C.index(2)
Out[46]: 0

In [47]: print(C[1])
2

In [48]: C.count(2)
Out[48]: 2

 

#列表和元組的異同?
#<相同點>
   列表和元組都是容器,可以包含任意型別的元素(甚至是包含一個序列)
   列表和元素也都包含元素的順序
#<差別>
    列表是可變的,元組是不可變的
    所以通常,在你有一些不確定長度的相同型別佇列時使用列表
    在已知元素數量的情況下用元組

 










相關文章