python數據類型-元組

總結:Python3.6版本

  • 創建元組:tuple()【空元組】
  • 創建元組:tuple(iterable)【新元組-由可迭代對象的成員初始化】
  • 元組分類:單層、嵌套
  • 元組長度:len(tuple)
  • 元組索引:tuple[i]【i從0開始】
  • 成員測試:x in tuple【返回布爾值】、for x in tuple:print(x)【遍歷】
  • 元組比較:【運算符重載,>、=、<=、==、!=】
  • 元組拼接:tuple1 + tuple2
  • 元組重複:tuple1 + tuple2 、tuple1 * N(N>=1)
  • 元組切片:tuple[a:b] 【正向從0開始,反向從-1開始,a、b均可以忽略,不包含後標】
  • 元組切片:tuple[a:b:c] 【a、b為區間,c為切片間隔,a、b均可以忽略,不包含後標】
  • 元組查找:tuple.index(value, start=None, stop=None)【返回查詢值首次出現的索引位置】
  • 元組計數:tuple.count(value)【返回給定數據出現的次數】


python數據類型-元組

<code># 空元組【手動創建、類實例化】
# 【運算符重載方法__init__解釋-->tuple()調用】
print(()) # ()
print(tuple()) # ()

# 創建元組【手動創建、類實例化】
# 【運算符重載方法__init__解釋-->tuple()調用】
print((1, 2, 3)) # (1, 2, 3)
print(tuple([1, 2, 3])) # (1, 2, 3)
print(tuple('123')) # ('1', '2', '3')
print(tuple(x for x in "123")) # ('1', '2', '3')

# 無嵌套的列表
print((1, '2', 3)) # (1, '2', 3)

# 嵌套的列表
print(("123", 456, ["12", 34])) # ('123', 456, ['12', 34])

# 元組長度【返回長度,運算符重載方法,長度運算,相當於調用了__len__方法】
print(len((1, 2, 3))) # 3
print((1, 2, 3).__len__()) # 3

# 元組索引【正向0標開始,反向-1標開始】
# 【返回索引值,運算符重載方法,索引運算,相當於調用了__getitem__方法】
for x in range(3):
print((1, 2, 3)[x], end=" ") # 1 2 3
print("", (1, 2, 3)[-1]) # 3
print((1, 2, 3).__getitem__(-1)) # 3

# 成員測試【返回布爾值,運算符重載方法,成員關係測試in,相當於調用了__contains__方法】
print(3 in (1, 2, 3)) # True
for x in (1, 2, 3):

print(x, end=" ") # 1 2 3
print((1, 2, 3).__contains__(3)) # True

# 元組比較【返回布爾值,運算符重載方法,特定的比較,調用方式(,<=,>=,==,!=)】
print((1, 2, 3) == (1, 2, 3)) # True
print((1, 2, 3).__eq__((1, 2, 3))) # True

print((1, 2, 3) != (1, 2, 3)) # False
print((1, 2, 3).__ne__((1, 2, 3))) # False

print((1, 2, 3) > (1, 2, 3)) # False
print((1, 2, 3).__gt__((1, 2, 3))) # False

print((1, 2, 3) < (1, 2, 3)) # False
print((1, 2, 3).__lt__((1, 2, 3))) # False

print((1, 2, 3) >= (1, 2, 3)) # True
print((1, 2, 3).__ge__((1, 2, 3))) # True

print((1, 2, 3) <= (1, 2, 3)) # True
print((1, 2, 3).__le__((1, 2, 3))) # True

# 元組拼接【運算符重載方法 運算符a+b、a+=b】
# 【__add__-->a+b,生成的是一個新對象】
# 【a+=b,等價於a=a+b,a引用了新對象,但不是重載__iadd__,沒有這個方法】
a = (1, 2)
b = (3,)
c = a + b
print(c, a) # [1, 2, 3] [1, 2]
print(a.__add__(b), a) # [1, 2, 3] [1, 2]

a = (1, 2)
b = (3,)
print(id(a)) # 56097848
a += b
print(a, id(a)) # (1, 2, 3) 56097888

# 元組重複【運算符重載方法 運算符a*b、a*=b】
# 【__mul__-->a*b,生成的是一個新對象、
# 【__rmul__--a*=b,等價於a=a*b,等價於a=a.__mul__,a引用了新對象】

a = (1,)
b = 3
c = a * b # 等價於 c=a.__mul__(b)
print(c) # (1, 1, 1)
print(a.__mul__(b), a) # (1, 1, 1) (1,)

a = (1,)
b = 3
print(id(a)) # 11549776
a *= b # 等價於【a=a*b、a=a.__mul__】
print(a, id(a)) # (1, 1, 1) 11598904

# 元組切片【正向從0標開始,反向走-1標開始】
# tuple[a:b]正向操作【等價於tuple[a:b:1]】,a、b可以為負,表示的是字符正反向的座標
# tuple[a:b:c]【c為整數正向操作--ab】
print((1, 2, 3)[:]) # (1, 2, 3)
print((1, 2, 3)[::-1]) # (3, 2, 1)
print((1, 2, 3)[0:1]) # (1,)
print((1, 2, 3)[-2:-1]) # (2,)
print((1, 2, 3)[0:3:2]) # (1, 3)
print((1, 2, 3, 4)[3:0:-2]) # (4, 2)
print((1, 2, 3, 4)[-1:-4:-2]) # (4, 2)

# 元組查詢【index函數返回查詢值首次出現的位置】
My_tuple = (1, 2, 3, 4, 3)
print(My_tuple.index(3)) # 2
print(My_tuple.index(3, 0, len(My_tuple))) # 2

# 元組計數【count函數返回給定數據出現的次數】
My_tuple = (1, 2, 3, 4, 3)
print(My_tuple.count(3)) # 2
/<code>

原型類或者方法:

<code>class tuple(object):

tuple() -> empty tuple
tuple(iterable) -> tuple initialized from iterable's items
If the argument is a tuple, the return value is the same object.
#空參數返回空元組、參數為可迭代對象則返回由可迭代對象成員初始化的新元組

def count(self, value):
T.count(value) -> integer -- return number of occurrences of value
return 0
#計算給定值出現的次數

def index(self, value, start=None, stop=None):
T.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
return 0
#返回給定值首次出現的索引值,不存在拋出ValueError

def __add__(self, *args, **kwargs):
Return self+value.
pass
#運算符重載運算方法 + 調用

def __contains__(self, *args, **kwargs):
Return key in self.
pass
#運算符重載運算方法--成員關係測試 in 調用

def __eq__(self, *args, **kwargs):
Return self==value.
pass
#運算符重載運算方法 == 調用

def __getattribute__(self, *args, **kwargs):
Return getattr(self, name).
pass

def __getitem__(self, *args, **kwargs):
Return self[key].
pass
#索引運算 a=(1,2,3) a[1]===a.__getitem__(1)

def __getnewargs__(self, *args, **kwargs):
pass

def __ge__(self, *args, **kwargs):
Return self>=value.
pass
#運算符重載運算方法 >= 調用

def __gt__(self, *args, **kwargs):
Return self>value.
pass
#運算符重載運算方法 > 調用

def __hash__(self, *args, **kwargs):
Return hash(self).
pass

def __init__(self, seq=()):
tuple() -> empty tuple
tuple(iterable) -> tuple initialized from iterable's items
If the argument is a tuple, the return value is the same object.
# (copied from class doc)
pass
#構造函數,創建實例類的時候調用,初始化一個對象

def __iter__(self, *args, **kwargs):
Implement iter(self).
pass
#返回一個迭代器

def __len__(self, *args, **kwargs):
Return len(self).
pass
#運算符重載運算方法 len() 調用

def __le__(self, *args, **kwargs):
Return self<=value.
pass
#運算符重載運算方法 <= 調用

def __lt__(self, *args, **kwargs):
Return self<value.> pass
#運算符重載運算方法 < 調用


def __mul__(self, *args, **kwargs):
Return self*value.n
pass
#運算符重載運算方法 tuple*N 調用

@staticmethod # known case of __new__
def __new__(*args, **kwargs):
Create and return a new object. See help(type) for accurate signature.
pass

def __ne__(self, *args, **kwargs):
Return self!=value.
pass
#運算符重載運算方法 != 調用

def __repr__(self, *args, **kwargs):
Return repr(self).
pass
#更好的顯示

def __rmul__(self, *args, **kwargs):
Return self*value.
pass
#運算符重載運算方法 tuple *=tuple1<==>tuple =tuple*tuple1/<value.>/<code>


分享到:


相關文章: