python高级特性

文章目录生成式生成式小案例生成器生成器小案例生产者-消费者模型生成器、迭代器与可迭代对象闭包装饰器生成式列表生成式:用来生成列表的特定语法形式的表达式。是Python提供的一种生成列表的简洁形式, 可快速生成一个新的list普通的语法格式:[exp for iter_var in iterable]#列表生成式:生成100个1~50之间的随机数值。#先使用空列表 循环100次 每循环...
摘要由CSDN通过智能技术生成

生成式

  • 列表生成式:用来生成列表的特定语法形式的表达式。是Python提供的一种生成列表的简洁形式, 可快速生成一个新的list
    普通的语法格式:[exp for iter_var in iterable]
#列表生成式:生成100个1~50之间的随机数值。
#先使用空列表 循环100次 每循环一次在random.randint(1,50)中选一个值保存到[]中
print([random.randint(1,50) for i in range(1,100)])

执行结果:
[42, 8, 22, 16, 34, 8, 37, 39, 31, 30, 7, 3, 11, 17, 39, 4, 8, 8, 16, 5, 12, 27, 15, 35, 1, 9, 5, 17, 41, 9, 14, 22, 29, 16, 30, 30, 44, 40, 32, 30, 20, 2, 28, 35, 19, 21, 38, 35, 12, 42, 30, 35, 9, 35, 34, 25, 44, 6, 8, 26, 26, 13, 19, 15, 37, 40, 15, 44, 1, 16, 27, 38, 15, 44, 5, 39, 23, 25, 7, 5, 43, 40, 16, 42, 20, 47, 14, 11, 9, 27, 36, 9, 43, 8, 20, 28, 14, 34, 17]

带过滤功能语法格式: [exp for iter_var in iterable if_exp]

#带过滤功能语法格式  1~100之间能被3整除的数
print([i for i in range(1,101) if i %3==0])

执行结果:
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

循环嵌套语法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

print([i+j for i in 'abc'for j in '123'])


执行结果:
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
  • 字典生成式:用来快速生成字典;
生成100个用户字典 用户名:密码
 import  pprint
 pprint.pprint({'user'+str(x+1):'passwd'+str(x+1) for x in range(100)})


执行结果:
{'user1': 'passwd1',
 'user10': 'passwd10',
 'user100': 'passwd100',
 'user11': 'passwd11',
 'user12': 'passwd12',
 'user13': 'passwd13',
 'user14': 'passwd14',
 'user15': 'passwd15',
 'user16': 'passwd16',
 'user17': 'passwd17',
 'user18': 'passwd18',
 'user19': 'passwd19',
 'user2': 'passwd2',
 'user20': 'passwd20',
 'user21': 'passwd21',
 'user22': 'passwd22',
 'user23': 'passwd23',
 'user24': 'passwd24',
 'user25': 'passwd25',
 'user26': 'passwd26',
 'user27': 'passwd27',
 'user28': 'passwd28',
 'user29': 'passwd29',
 'user3': 'passwd3',
 'user30': 'passwd30',
 'user31': 'passwd31',
 'user32': 'passwd32',
 'user33': 'passwd33',
 'user34': 'passwd34',
 'user35': 'passwd35',
 'user36': 'passwd36',
 'user37': 'passwd37',
 'user38': 'passwd38',
 'user39': 'passwd39',
 'user4': 'passwd4',
 'user40': 'passwd40',
 'user41': 'passwd41',
 'user42': 'passwd42',
 'user43': 'passwd43',
 'user44': 'passwd44',
 'user45': 'passwd45',
 'user46': 'passwd46',
 'user47': 'passwd47',
 'user48': 'passwd48',
 'user49': 'passwd49',
 'user5': 'passwd5',
 'user50': 'passwd50',
 'user51': 'passwd51',
 'user52': 'passwd52',
 'user53': 'passwd53',
 'user54': 'passwd54',
 'user55': 'passwd55',
 'user56': 'passwd56',
 'user57': 'passwd57',
 'user58': 'passwd58',
 'user59': 'passwd59',
 'user6': 'passwd6',
 'user60': 'passwd60',
 'user61': 'passwd61',
 'user62': 'passwd62',
 'user63': 'passwd63',
 'user64': 'passwd64',
 'user65': 'passwd65',
 'user66': 'passwd66',
 'user67': 'passwd67',
 'user68': 'passwd68',
 'user69': 'passwd69',
 'user7': 'passwd7',
 'user70': 'passwd70',
 'user71': 'passwd71',
 'user72': 'passwd72',
 'user73': 'passwd73',
 'user74': 'passwd74',
 'user75': 'passwd75',
 'user76': 'passwd76',
 'user77': 'passwd77',
 'user78': 'passwd78',
 'user79': 'passwd79',
 'user8': 'passwd8',
 'user80': 'passwd80',
 'user81': 'passwd81',
 'user82': 'passwd82',
 'user83': 'passwd83',
 'user84': 'passwd84',
 'user85': 'passwd85',
 'user86': 'passwd86',
 'user87': 'passwd87',
 'user88': 'passwd88',
 'user89': 'passwd89',
 'user9': 'passwd9',
 'user90': 'passwd90',
 'user91': 'passwd91',
 'user92': 'passwd92',
 'user93': 'passwd93',
 'user94': 'passwd94',
 'user95': 'passwd95',
 'user96': 'passwd96',
 'user97': 'passwd97',
 'user98': 'passwd98',
 'user99': 'passwd99'}

  • 集合生成式:用来快速生成集合;
# 需求: 生成100个1~200之间的随机且不重复数值。
import random
print({random.randint(1, 200) for count in range(100)})

执行结果:
{3, 4, 7, 10, 14, 15, 17, 18, 19, 21, 23, 25, 26, 28, 31, 33, 36, 37, 40, 42, 44, 48, 51, 54, 56, 58, 62, 67, 68, 71, 79, 81, 84, 86, 87, 88, 89, 93, 95, 96, 100, 101, 102, 105, 106, 109, 110, 114, 116, 119, 123, 127, 131, 137, 140, 141, 149, 150, 151, 153, 154, 159, 162, 163, 165, 166, 168, 169, 172, 175, 177, 179, 184, 187, 190, 195, 196, 198}

生成式小案例

  1. 求以r为半径的圆的面积和周长(r的范围从1到10)。
import math
print({'s='+str(math.pi*r**2) :'C='+str(math.pi*2*r)for r in range(1,11)})

执行结果:
{'s=3.141592653589793': 'C=6.283185307179586', 's=12.566370614359172': 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值