元组
元组和列表一样都是一组有序的数据的组合
元组中的元素一旦定义不可修改,因此元组成为不可变数据类型
定义
- 定义空元组 变量 = () 或者 变量 = tuple()
- 还可以使用变量 = (1,2,3)定义含有数据的元组
- 注:如果元组中只有一个元素时必须加上逗号,变量 = (1,)
- 特例 : 变量 = 1,2,3 这种方式也可以定义一个元组
元组的相关操作
由于元祖是 不可变得数据类型,只能使用下标访问,不能有其他操作
元组的切片操作
元组的切片和列表的一样
元组的加法运算,合并操作
>>re = (1,2,3)
>>rc = (4,5)
>>res = re + rc
>>print(res) #(1,2,3,4,5)
元组的推导式(生成器)
列表的推导式返回一个列表,元组推导式返回一个生成器,生成器是一个特殊的迭代器
生成器可以自定义,也可以使用元组推导式定义
生成器是按照某种算法去推算下一个数据或结果
语法
推导式定义:里面是推导式,外面一个括号,就是生成器
自定义生成器:含有yield关键字的函数就是生成器,换句话说,含有yield关键字的函数生成的是迭代器,也就是说,生成器是一个返回迭代器的函数
如何使用生成器
生成器是迭代器的一种,因此可以使用迭代器的方法
verlist = [1,2,3,4,5]
new = []
ll = (i**2 for i in verlist)
print(type(ll)) #<class 'generator'>
for i in ll:
print(i,end=" ") #1 4 9 16 25
生成器与yield关键字
yield函数使用在生成器函数中
- yield和函数中return像
- 共同点:执行到这个关键字时会把结果返回
- 不同点:
- return会把结果返回,并结束当前函数的调用
- yield会返回结果,并记住当前代码执行的位置,下一次调用时会从上一次离开的位置继续向下执行
# def hello():
# print('hello,1')
# return 1
# print('12')
# return 2
#
# hello()
def hello():
print('hello1')
yield 1
print('hello2')
yield 2
res = hello()
print(res)
r = next(res)
print(r)
r = next(res)
print(r)
"""
hello1
1
hello2
2
"""