吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1527|回复: 1
收起左侧

[Python 转载] 【笔记】zip()并行迭代与推导式创建序列

[复制链接]
cccyyys 发表于 2021-6-9 10:53
一、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 = [x*2 for x in range(1,5)]  #推导式写法
print(a)
a = [x for x in range(1,50) if x%4==0]  #推导式后加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))#会打印出一个空的元组

免费评分

参与人数 1吾爱币 +5 热心值 +1 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lihu5841314 发表于 2021-6-13 10:15
学习了  温故而知新
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表