《Python零基础到精通》学习笔记:3.2 循环结构

目录

3.2 循环结构

3.2.1 While循环与break语句

3.2.2 for循环与continue语句

3.2.3 循环嵌套

3.2.4 迭代器


3.2 循环结构

3.2.1 While循环与break语句

程序的第三大结构是循环结构。在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环。循环语句分为while循环、for循环、循环嵌套和迭代器。循环语句中有一个语句break,通过这个语句可以跳出整个循环。

while语句

while语句的基本形式为:

  1. while 判断条件1:
  2. 循环语句

判断条件1true时,执行循环语句,直到判断条件1为假。例如:

  1. count = 0
  2. while(count <= 10):
  3. print("现在计数为:",count)
  4. count += 1

break语句

break语句的基本形式为:

  1. while 判断条件1:
  2. 循环语句
  3. 判断条件2:
  4. break

判断条件1true时执行循环语句。若此时判断条件2true,执行break跳出while循环,若判断条件2一直为false,则执行while循环,一直到判断条件1false。 例如:

  1. count = 0
  2. while(count <= 10):
  3. print("现在计数为:",count)
  4. count += 1
  5. if(count > 5):
  6. break

3.2.2 for循环与continue语句

Python 中还为我们提供了一种循环结构:for循环。for循环可以遍历序列成员,直到序列中的成员全部都遍历完后才跳出循环。循环语句中有一个continue语句,这个语句的作用是跳出当前循环。

for语句

for语句的基本形式为:

  1. for iteration_var in sequence:
  2. 循环语句

依次遍历序列中的成员,执行循环语句。例如:

  1. list = ['python','java','c','c++']
  2. for book in list:
  3. print("当前书籍为:",book)

continue语句

continue语句的基本形式为:

  1. for iteration_var in sequence:
  2. 循环语句
  3. if 判断语句1:
  4. continue

当遍历序列时,如果判断语句1为真,则执行continue语句,跳出当前循环,直接进入下一次循环。例如:

  1. list = ['python','java','c','c++']
  2. count = 0
  3. for book in list:
  4. count += 1
  5. if count == 3:
  6. continue
  7. print("当前书籍为:",book)

3.2.3 循环嵌套

在Python 中,除了while循环与for循环,还有循环嵌套。循环嵌套就是在一个循环体里嵌入另一个循环。

循环嵌套分为for循环嵌套和while循环嵌套。

for循环嵌套

for循环嵌套的基本形式为:

  1. for iteration_var in sequence:
  2. for iteration_var in sequence:
  3. 循环语句

例如:

  1. for x in range(1,10):
  2. for y in range(0,x):
  3. result = x + y
  4. print(result)

while循环嵌套

while循环嵌套的基本形式为:

  1. while 判断条件:
  2. while 判断条件:
  3. 循环语句

例如:

  1. x = 1
  2. y = 0
  3. while x < 10:
  4. while y < x:
  5. result = x + y
  6. print(result)
  7. y += 1
  8. x += 1
  9. y = 0

3.2.4 迭代器

迭代器用来循环访问一系列元素,它不仅可以迭代序列,也可以迭代不是序列但是表现出序列行为的对象。

迭代器的优点

  • 迭代器访问与for循环访问非常相似,但是也有不同之处。对于支持随机访问的数据结构如元组和列表,迭代器并无优势。因为迭代器在访问的时候会丢失数据索引值,但是如果遇到无法随机访问的数据结构如集合时,迭代器是唯一访问元素的方式;

  • 迭代器仅仅在访问到某个元素时才使用该元素。在这之前,元素可以不存在,所以迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合;

  • 迭代器提供了一个统一的访问集合的接口,定义iter()方法对象,就可以使用迭代器访问。

理解迭代器

可直接作用于for循环的数据类型如listtupledict等统称为可迭代对象:Iterable。使用isinstance()可以判断一个对象是否是可迭代对象。

  1. from collections import Iterable
  2. result = isinstance([],Iterable)
  3. print(result)
  4. result = isinstance((),Iterable)
  5. print(result)
  6. result = isinstance('python',Iterable)
  7. print(result)
  8. result = isinstance(213,Iterable)
  9. print(result)

结果为:

  1. True
  2. True
  3. True
  4. False

所有的Iterable都可以通过iter()函数转化为Iterator

定义迭代器

当自己定义迭代器时,需要定义一个类。类里面包含一个iter()函数,这个函数能够返回一个带next()方法的对象。例如:


class MyIterable:
    def __iter__(self):
        return MyIterator()
class MyIterator:
    def __init__(self):
        self.num = 0
    def __next__(self):
        self.num += 1
        if self.num >= 10:
            raise StopIteration
        return self.num

复制迭代器

迭代器当一次迭代完毕后就结束了,在此调用便会引发StopIteration异常。如果想要将迭代器保存起来,可以使用复制的方法:copy.deepcopy():x = copy.deepcopy(y),不可使用赋值的方法,这样是不起作用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值