# 直接把一个元组赋值给一个变量
>>> number = (1,2,3,4,5,6)
>>> number
(1, 2, 3, 4, 5, 6)
# 查看变量类型
>>> type(number)
<class 'tuple'>
# 建立空元组
>>> number = ()
>>> number
()
>>> number = tuple()
>>> number
()
# 将其他迭代对象转换为元组
>>> number = tuple(range(9))
>>> number
(0, 1, 2, 3, 4, 5, 6, 7, 8)
元组属于不可变序列,没有任何方法可以修改元组中元素的值,但是如果元组中包括可变序列,有如下情况:
# 元组中包含列表
>>> data = ([5,2,1],233)
>>> data[0][2]
1
# 修改元组中的列表元素
>>> data[0][2] = 1024
>>> data
([5, 2, 1024], 233)
# 为元组中的列表添加元素
>>> data[0].append(666)
>>> data
([5, 2, 1024, 666], 233)
# 无法修改元组的值
>>> data[0] = 1024
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: 'tuple' object does not support item assignment
生成器推导式的结果是一个生成器对象,当所有元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
# 创建生成器对象
>>> number = ((i+1)**3 for i in range(10))
>>> number
<generator object <genexpr> at 0x000002114B3D9510>
# 将生成器转换为元组
>>> tuple(number)
(1, 8, 27, 64, 125, 216, 343, 512, 729, 1000)
# 生成器已经遍历结束,没有元素了
>>> list(number)
[]
# 使用生成器对象的__next__()方法获取下一个元素
>>> number = ((i+1)**3 for i in range(10))
>>> number.__next__()
1
>>> number.__next__()
8
>>> number.__next__()
27
>>> number.__next__()
64
# 使用内置函数next()获取生成器对象中的元素
>>> next(number)
125
>>> next(number)
216
>>> next(number)
343
>>> next(number)
512
# 使用循环遍历生成器对象中的元素
number = ((i+1)**3 for i in range(10))
for item in number:
print(item,end = ' ')
1 8 27 64 125 216 343 512 729 1000
生成器对象具有惰性求值的特点,只有需要时返回元素,比列表推导式效率更高,适合大量数据的遍历。