python序列类型之元组

元组

元组tuple也属于python序列类型,但是却是不可变序列。元组从名字可以看出元,说明是固定的不可动的,元组在实际中也确实没有相应的对象方法来实现增删改查。但是可以通过切片从而产生新的元组对象,来实现看上去的增删改查。

目录

元组

元组的创建:

元组对象的其他方法和操作函数:


元组的创建:

1,使用英文括号()来创建

tuple1 = (1, 2, 3)
tuple2 = (1,)  # 1后面的英文逗号可以少
tuple3 = 1, 2, 3  # 不加括号也可以
print(tuple1)
print(tuple2)
print(tuple3)

不加括号这种形式在函数有多个返回值,却用一个变量来接收时是一样的,这个接受的变量类型就是元组。

def func():
    return 1, 2, 3, 4


re = func()
print(type(re))
print(re)
# 
# (1, 2, 3, 4)

2,使用tuple()函数来创建

需要给tuple()函数传一个可迭代对象作为参数。也就是tuple(可迭代对象)。

itera = [1, 2, 3, 4]
tu1 = tuple(itera)
print(type(tu1), tu1)
#  (1, 2, 3, 4)

3,元组推导式

元组推导式和列列表推导式一样,只是把[]换成了()。实际上换成括号之后,变成了一个生成器对象,需要用tuple函数将生成器对象(也是可迭代的)转换成元组。

gen = (x**2 for x in range(1,11))
print(gen)
tu = tuple(gen)
print(tu)
#  at 0x0000027CD8CECBC8>
# (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

元组对象的其他方法和操作函数:

元组的元素访问,index(),count()等方法与列表list一模一样。max函数,min函数,sum函数。in和not in语法业余list一模一样。切片也是一模一样,会产生新的对象。

gen = (x ** 2 for x in range(1, 11))
print(gen)
tu = tuple(gen)
# (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)
tu1 = tu[-3:-1]
print('切片tu1是:', tu1)
print(tu.index(1))
print(tu.count(1))
print(tu[0], tu[1], tu[2], tu[3])
print(1 in tu, 1 not in tu)
print(max(tu), min(tu), sum(tu))
#  at 0x000001E08DBED348>
# 切片tu1是: (64, 81)
# 0
# 1
# 1 4 9 16
# True False
# 100 1 385
del tu
#     del tu[0]
# TypeError: 'tuple' object doesn't support item deletionpeError: 'tuple' object doesn't support item deletion

虽然del元组中某一个元素不可以,但是可以del一个元组对象。

你可能感兴趣的:(python,python,开发语言)