cccyyys 发表于 2021-6-9 10:53

【笔记】zip()并行迭代与推导式创建序列

一、zip()函数
        我们可以通过zip()函数对多个序列进行并行迭代,需要注意,zip()函数会在最短序列用完之后就会停止
        测试代码如下:
        #测试zip()并行迭代
names = ('高小一','高小二','高小三','高小四')
ages = (16,18,20,25)
jobs = ('学生','公务员','老师')

for name,age,job in zip(names,ages,jobs):#zip()函数会在最短序列用完之后停止
    print(name,age,job)
    print("{0}--{1}--{2}".format(name,age,job))
二、推导式创建序列
推导式是从一个或多个迭代器快速创建系列的一种方法
1、列表推导式生成列表对象
        语法:[表达式 for item in 可迭代对象]或 [表达式 for item in 可迭代对象 if 条件判断] 也可以在推导式中使用多个循环
2、字典推导式生成字典对象
        语法:{key_expression:value_expression for 表达式 in 可迭代对象}与列表推导式类似,也可以使用if条件判断和多个for循环
3、集合推导式生成集合
        语法:{表达式 for item in 可迭代对象}或{表达式 for item in 可迭代对象 if 条件判断}
4、生成器推导式(生成元组)
        语法:(表达式 for item in 可迭代对象)这种会生成一个生成器对象,可以利用生成器对象生成元组
测试代码:
#测试推导式

#列表推导式
a = #推导式写法
print(a)
a = #推导式后加if条件句
print(a)
cells = [(row,col) for row in range(1,10) for col in range(1,10)]#使用两个循环
print(cells)
#普通循环写法
a = [] #定义一个空列表
for x in range(1,50):
    if x%4==0: #添加if条件句
      a.append(x) #在列表尾部增加符合条件的元素
print('a=',a)

#字典推导式
#统计文本中字符出现的次数
my_text = 'i love you,i love sxt,i love gaoxiaoyi'
char_count = {x:my_text.count(x) for x in my_text}
print(char_count)

#普通循环写法
my_text = 'i love you,i love sxt,i love gaoxiaoyi'
char_count = {} #定义一个空的字典对象
for x in my_text:
    char_count = {x:my_text.count(x)} #遍历之后用count()函数统计各字符出现的次数
    print(char_count,end = '\t')
print() #换行

#集合推导式
a = {x for x in range(1,100) if x%10==0}
print(a)

#生成器推导式(生成元组)
a = (x for x in range(1,100) if x%5==0)
print(a)#打印出来发现是生成器对象
for x in a:#利用for循环查看生成器,生成器对象只能用一次
    print(x,end= '\t')
print()#换行
print(tuple(a))#会打印出一个空的元组

lihu5841314 发表于 2021-6-13 10:15

学习了温故而知新
页: [1]
查看完整版本: 【笔记】zip()并行迭代与推导式创建序列