我是靠谱客的博主 年轻水蜜桃,最近开发中收集的这篇文章主要介绍PYTHON自学笔记4之列表生成器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

练习列表生成式
筛选出字符串类型并展示:

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之列表生成器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部