概述
练习列表生成式
筛选出字符串类型并展示:
L1=['hello','world',18,'apple',None]
L2=[]
n=1
for s in L1:
if isinstance(s,str)==1:
L2.append(s.lower())
else:
print('the number of non str is %d ' %(n))
n=n+1
print(L2)
L2=[s.lower() for s in L1 if isinstance(s,str)==1]
print(L2)
从这也看出来python 中for循环的流程,if 和else后面都没有c中常见的花括号,只是用冒号进行区分,但这里的缩进,起了到关键性的作用,提示程序哪些句子要在条件语句中选择编译!
Q1:
g=(x*x for x in range(10))
for n in g:
print(n)
从sublime中复制到cmd中运行,没问题,但在交互环境中一条一条输入却出现:
网上说这是缩进问题,可是这要怎么在交互环境中解决?
很多情况下都是缩进导致的问题,有:要缩进,if else while 要缩进
足以看出来python对格式要求之严格!
再来体会下生成器:
改用for循环实现
结果不对了!!!
为什么?再来看看这个:
这下就懂了,因为用循环的时候每一次循环都改变了L,所以计算结果不对,看来生成式在最终赋值前原列表值不变。
最后看看用生成器产生杨辉三角和循环产生杨辉三角的区别:
循环:
def
zyhsj(line):
b=0
l=[1]
l2=[1]
if line==1:
l=[1]
yield l
else:
while b<line:
yield l2
l.append(0)
l2=[]
for a in range(len(l)):
l2.append(l[a]+l[a-1])
b=b+1
l=l2
#output
for n in zyhsj(10):
print(n)
生成器:
def triangles():
L=[1]
while True:
yield L
L.append(0)
L=[L[i-1]+L[i] for i in range(len(L))]
#output
n=0
for tep in triangles():
print(tep)
n=n+1
if n==11:
break
从简洁性来看,生成器胜!
当然,循环,可以帮助理解~
最后
以上就是年轻水蜜桃为你收集整理的PYTHON自学笔记4之列表生成器的全部内容,希望文章能够帮你解决PYTHON自学笔记4之列表生成器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复