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>


分享到:


相關文章: