zoukankan      html  css  js  c++  java
  • python笔记之条件语句、循环语句、迭代器和生成器

    本节学习python中的条件语句、循环语句、迭代器和生成器。

    1、条件语句

    python条件语句使用if……elif……else格式

    1 num = int(input('请输入你的成绩:'))
    2 if num > 85:
    3     print('优秀')  #使用缩进划分语块
    4 elif 85>= num > 70:
    5     print('良好')
    6 elif 70>=num>=60:
    7     print('及格')
    8 else:
    9     print('不及格')

    python中没有switch--case语句

    2、循环语句

    while循环

     1 num = 5
     2 while(num>2):  #while循环
     3     print(num)
     4     num -= 1
     5 
     6 num = 5
     7 while(num>2): #while……else…… 循环,while条件为false时else语句执行
     8     num -= 1
     9     print(num)
    10 else:
    11     print("else:%d"%num)

    python中没有do……while……,当出现死循环可以使用CTRL+C退出

    for循环,可以循环遍历任何序列对象,如字典、字符串、列表

     1 num = 5
     2 for i in [1,2,3,4,5,7]:
     3     print(i)
     4 
     5 # str1='cainiaoxuexi'
     6 str1='a'
     7 for i in str1:
     8     if i == 'x':
     9         print('中断,跳出循环')
    10         break     #break跳出整个循环
    11     print(i)
    12 else:             #如果没有break循环,那么for循环结束后else执行
    13     print('没有循环体')
    14 print("循环结束")
    1 str1='axv'
    2 for i in str1:
    3     if i == 'x':
    4         continue  #结束本次循环
    5     print(i)
    6 else:             #如果没有break循环,那么for循环结束后else执行
    7     print('没有循环体')
    8 print("循环结束")

    break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

    continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

    range()函数用于生成数字序列

    1 for i in range(100,120,5):  #可以指定开始,结束值 和 步长,步长也可以为负数
    2     print(i)
    3 
    4 for i in range(-100,-120,-5):  #可以指定开始,结束值 和 步长,步长也可以为负数
    5     print(i)

    3、迭代器和生成器

    迭代器是可以记住循环的位置的对象,是访问集合元素的一种方式,从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

    迭代器有两个基本的方法:iter() 和 next()

    字符串,列表或元组对象都可用于创建迭代器:

     1 import sys
     2 
     3 list1 = [1,2,3,4,5,6,7,8]
     4 it = iter(list1)
     5 print(type(it)) #是个列表跌倒器对象
     6 while True:
     7     try:
     8         print(next(it))
     9     except StopIteration:
    10         sys.exit()

    创建一个类迭代器,需要在类中实现两个方法 __iter__() 与 __next__() 

     1 class MyNumber():
     2     def __iter__(self): #__iter__() 方法返回一个特殊的迭代器对象
     3         self.a = 1
     4         return self
     5 
     6     def __next__(self):
     7         if self.a <= 20:
     8             x = self.a
     9             self.a += 1
    10             return x
    11         else:
    12             raise StopIteration
    13 
    14 
    15 myclass = MyNumber()
    16 myiter = iter(myclass)
    17 
    18 for x in myiter:
    19     print(x)

    生成器

    在 Python 中,使用了 yield 的函数被称为生成器(generator)。

    跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

    调用一个生成器函数,返回的是一个迭代器对象。

     1 import sys
     2 
     3 
     4 def fibonacci(n):  # 生成器函数 - 斐波那契
     5     a, b, counter = 0, 1, 0
     6     while True:
     7         if (counter > n):
     8             return
     9         yield a
    10         a, b = b, a + b
    11         counter += 1
    12 
    13 
    14 f = fibonacci(10)  # f 是一个迭代器,由生成器返回生成
    15 
    16 while True:
    17     try:
    18         print(next(f), end=" ")
    19     except StopIteration:
    20         sys.exit()
  • 相关阅读:
    手把手教你利用create-nuxt-app脚手架创建NuxtJS应用
    初识NuxtJS
    webpack打包Vue应用程序流程
    用选择器代替表格列的筛选功能
    Element-UI
    Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
    Sparse Principal Component Analysis via Rotation and Truncation
    Generalized Power Method for Sparse Principal Component Analysis
    Sparse Principal Component Analysis via Regularized Low Rank Matrix Approximation(Adjusted Variance)
    Truncated Power Method for Sparse Eigenvalue Problems
  • 原文地址:https://www.cnblogs.com/heertong/p/12104748.html
Copyright © 2011-2022 走看看