12. 函数-推导式

一、列表推导式

1. 语法格式
	[ 结果 for 变量 in 可迭代对象 if 条件 ]

2. 代码示例
	# 100以内能被3整除的数的平方
	gen = [i * i for i in range(100) if i % 3 == 0]
	for num in gen:
		print(num)

二、生成器推导式

1. 语法格式
	( 结果 for 变量 in 可迭代对象 if 条件 )

2. 代码示例
	# 100以内能被3整除的数的平方
	gen = (i * i for i in range(100) if i % 3 == 0)
    gen.__next__()
    
	for num in gen:
		print(num)

三、字典推导式

1. 语法格式
	{key: value for循环 if 筛选}

2. 代码示例
	dic = {"张无忌":"九阳神功", "乔峰":"降龙十八掌", "楚留香":"帅"}
	d = {dic[k]: k for k in dic}
	print(d)

四、集合推导式

1. 语法格式
	{key for if}

2. 代码示例
    lst = ["周杰伦","周伯通","周润发","周伯通","周笔畅","周伯通","周星驰","周伯通"]
    s = {el for el in lst}
    print(s)

备注:⽣成器表达式和列表推导式的区别:

  • 列表推导式比较耗内存. ⼀次性加载. ⽣成器表达式⼏乎不占⽤内存. 使⽤的时候才分 配和使⽤内存

  • 得到的值不⼀样. 列表推导式得到的是⼀个列表. ⽣成器表达式获取的是⼀个⽣成器.⽣成器的惰性机制: ⽣成器只有在访问的时候才取值

posted @ 2019-10-26 21:24  qi.hu  阅读(269)  评论(0编辑  收藏  举报