学习python的心酸历程----元组

元组


元组和列表一样都是一组有序的数据的组合
元组中的元素一旦定义不可修改,因此元组成为不可变数据类型

定义

  • 定义空元组 变量 = () 或者 变量 = 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
"""

上一篇:线程,yield()


下一篇:手写一个async/await的实现