Python核心编程---读书笔记:第8章 条件和循环

本文是关于Python编程的读书笔记,主要聚焦在第8章的条件和循环结构。介绍了if、elif和else语句,以及三元操作符的使用。详细讲解了while和for循环,包括通过序列和索引进行迭代,并提到了与序列相关的内置函数如sorted()、reversed()等。此外,还探讨了pass语句、迭代器、iter()函数、列表解析和生成器表达式的概念与应用,强调了它们在处理大数据时的性能优势。

 

第8章条件和循环

 8.1if语句

多重条件表达式,and , or , not

elif:

三元操作符:

smaller = x if x < y else y

符合条件,返回前面的;否则,返回后面的

 

def getMin(num1 , num2):
    smaller = num1 if num1 < num2 else num2
    return smaller

 

8.5 while语句

 

8.6 for语句

通过序列想迭代

for name in names:

         …

 

通过索引迭代

for i in range(len(names)):

 

 

8.6.3用于迭代器类型

迭代器对象有next()方法,返回下一条目

迭代完成用StopIteration除法异常

 

range(end)

range(start ,end)

 

 

与序列相关的内建函数

sorted() , reversed() , enumerate() , zip()

 

8.9 pass语句

pass不做任何事情,用于标记以后将要完成的代码

 

8.11 迭代器和iter()函数

迭代器是数据结构,可以迭代至最后一个元素

迭代器作用:迭代醒呢个提升,可扩展

迭代方法:next()获取对象,全部获取会引发StopIteration异常

迭代器去诶an:不能回到开始,不能复制迭代器

 

#迭代器
def iterTest():
    nums = range(1,11)
    it = iter(nums)
    while True:
        try:
            value = it.__next__() #注意这里不是next()
           
print(value)
        except StopIteration:
            break

 

文件的迭代:

调用readline()方法就是迭代

myfile = open(‘data.txt’)

for eachline in myFile:

         prnt(eachline)

 

8.11.5可变对象和迭代器

迭代时如果改变元素(删除),是不会执行的

创建迭代器

iter(obj)

iter(func , sentinel): sentinel:哨兵

实现了__iter__()和next()方法的类可以作为迭代器使用

传递两个参数,会重复调用func,直到下一个值为sentinel

 

8.12列表解析

列表解析:可以只使用一句话进行操作

语法: [expr  for iter_var initerable]

[x ** 2 for x in range(6)]

filter(func , seq):

 

def filterTest():
    nums = range(1,11)
    results = filter(lambda x : x % 2 , nums)
    print(results)

 

#三行5列矩阵,矩阵迭代,前面是元素(x,y)后面先是行循环,然后是列循环
def matrixIter():
    nums = [(x+1 , y+1) for x in range(3) for y in range(5)]
    print(nums)

 

8.13生成器表达式

生成器表达式是列表解析的扩展

生成器含义:是一个函数,允许返回值,暂停代码的执行,之后恢复

生成器实现原理:生成器每次计算出一个条目后,把条目通过yield产生出来,生成器采用延迟计算,省内存

 

列表解析缺点:需要生成所有数据,大数据性能不好

列表解析是方括号,生成器是圆括号

[expr for iter_val in iterable ifcond_expr]

(expr for iter_val in iterable ifcond_expr)

计算非空字符总和

sum(len(word) for line in data for word inline.split() )

寻找最长文件

max( len(x.strip()) for x in open(‘/etc/motd’))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值