这个系列更新前言:
这个系列的博文是从北大tensorflow学习笔记里截出来的专门学python高级用法的日志,
写博客的主要愿因是博主在学慕课上北大的tensorflow笔记,但是只有py基础,然后发现很多东西是常用库上的,所以独立开了个博客,暂时先停止tensorflow笔记的更新,也建议有兴趣学tf的同学,先看完这些博客,或者对着老师的源代码看博客更新
有在学的零基础可以看,想提高python的也可以,也欢迎大家去看tf系列的代码,我的博文里会更这个系列。希望大家一起学习,共同进步~
python学习手册:
列表生成式举例:
我们要生成[1x1, 2x2, 3x3, ..., 10x10]的数组。
#python传统代码
for x in range(1, 11):
L.append(x * x)
#python列表生成式的代码
[x * x for x in range(1, 11)]
列表推导式
采用方括号[]表示,并且用到了一个简写版的for循环,第一部分是一个生成结果列表元素的表达式,第二部分是一个输入表达式上的循环。阅读理解列表表达式的推荐做法是先从里面的for循环开始,向右查看是否有if条件,然后将推导式开始的那个表达式映射到每一个匹配的元素上去。(个人理解,生成式是一种没有判断条件的推导式,或者说普通的推导式)
列表推导式框架:
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
[ (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8 ]
列表推导式举例解读:
在tensorflow学习中
例子一:
Y_ = [[int(x0 + x1 < 1)] for (x0, x1) in X]
这一段是一段列表生成式的代码,先左边从X中取出x0,x1(这个x是个两列n行的数组),这是一个列表生成式。
然后取出来的x0和x1如果相加小于1,判断为true,int()其实是个取整数的意思,true的值就是1,这个时候Y_的值就是1了。
例子二:
Y_c = [['red' if y else 'blue'] for y in Y_]
将真值放if 前面,判断条件放中间(一般判断条件都会放if后面),(for后面是个列表生成器)
写法有点反直观,但真的很简洁
其他推导式阅读
try_list = [1, 2, 3, 4, 5]
# 前2种一样,
[a > 3 for a in b]
[True if x>3 else False for x in try_list]
# 返回结果[False, False, False, True, True]
[True for x in try_list if x > 3]
# 返回结果 [True, True]