数据类型详解— 元组的定义和元组的切片操作
'''
元组和列表一样都是一组有序的数据的组合
元组中的元素一旦定义不可以修改,因此元组称为 不可变数据类型
'''
'''
元组的相关操作
由于元组是不可变的数据类型,因此只能使用索引进行访问,不能进行其它操作
元组可以和列表一样使用切片方式获取元素
'''
vartuple = (1,2,3,4)
print(vartuple,len(vartuple))
vart = (1,2,3,4,5,6)
res = vart[:]
res = vart[::]
res = vart[1:]
res = vart[1:3]
res = vart[:3]
res = vart[1:6:2]
res = vart[::2]
res = vart[6:1:-1]
res = vart.count(75)
res = vart.index(5)
res = vart.index(5,1)
print(res)
res = (1,2,3) + ('a','b','c')
res = (1,2,3) * 3
res = 2 in res
print(res)
元组推导式 生成器
'''
元组推导式
列表推导式结果返回了一个列表,元组推导式返回的是生成器
语法:列表推导式 ==> [变量运算 for i in 容器] ==> 结果 是一个 列表
元组推导式 ==> (变量运算 for i in 容器) ==> 结果 是一个 生成器
生成器是什么 ?
生成器就是一个特殊的迭代器,生成器可以自定义,也可以使用元组推导式定义
生成器是按照某种算法推算下一个数据或结果,只需要往内存中存储一个生成器,节约内存消耗,提高性能
语法:
1.里面是推导式,外面是一个()的结果是一个生成器
2.自定义生成器,含有yield关键字的函数就是生成器
含有yield关键字函数,返回的结果是一个迭代器,换句话说,生成器函数就是一个返回迭代器的函数
如何使用生成器?
生成器是迭代器的一种,因此可以使用迭代的操作方法来操作生成器
'''
varlist = [1,2,3,4,5]
newlist = [i**2 for i in varlist]
newl = (i**2 for i in varlist)
print(newl)
for i in newl:
print(i)
练习题
def fibo(num):
a,b,i = 0,1,0
while i < num:
yield b
a,b = b,a+b
i += 1
num = int(input('请输入一个正整数:'))
for i in fibo(num):
print(i,end=" , ")
|