zoukankan      html  css  js  c++  java
  • python-for循环

    一、功能

      for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)

      Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

    二、语法

      for循环的一般格式如下:

      for iter_var in iterable:

        suite_to_repeat

    注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.

    python for循环实例

    msg="hello egon 666"
    for i in (msg):
        print(i)
    for循环,利用索引遍历出每一个字符

    执行结果如下

    C:Python36python.exe C:/Users/张宁阳/Desktop/test/day7/作业.py
    h
    e
    l
    l
    o
     
    e
    g
    o
    n
     
    6
    6
    6
    
    Process finished with exit code 0
    View Code
    遍历序列类型
    name_list=['alex','eric','rain','xxx']
    
    #通过序列项迭代
    for i in name_list:
        print(i)
    
    #通过序列索引迭代
    for i in range(len(name_list)):
        print('index is %s,name is %s' %(i,name_list[i]))
    
    #基于enumerate的项和索引
    for i,name in enumerate(name_list,2):
        print('index is %s,name is %s' %(i,name))
    for循环遍历序列

    遍历可迭代对象或迭代器:

    迭代对象:就是一个具有next()方法的对象,obj.next()每执行一次,返回一行内容所有内容迭代完后,

    迭代器引发一 个 StopIteration 异常告诉程序循环结束. for 语句在内部调用 next() 并捕获异常.

    for循环遍历迭代器或可迭代对象与遍历序列的方法并无二致,只是在内部做了调用迭代器next(),并捕获异常,终止循环的操作

    很多时候你根本无法区分for循环的是序列对象还是迭代器 

    >>> f=open('a.txt','r')
    
    for i in f:
        print(i.strip())
    hello
    everyone
    sb

    三、range()函数

    如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。

    range()语法:

    range(start,end,step=1):顾头不顾尾

    • range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    • range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]
    • range(1,10,2):指定start=1,end=10,step=2,生成可迭代对象,包含[1, 3, 5, 7, 9]

    例如:

    >>>for i in range(5):
    ...     print(i)
    ...
    0
    1
    2
    3
    4

    注:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环

    你也可以使用range指定区间的值:

    >>>for i in range(5,9) :
        print(i)
     
        
    5
    6
    7
    8
    >>>

    您可以结合range()和len()函数以遍历一个序列的索引,如下所示:

    >>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
    >>> for i in range(len(a)):
    ...     print(i, a[i])
    ... 
    0 Google
    1 Baidu
    2 Runoob
    3 Taobao
    4 QQ
    >>>
    View Code

    四、for与break,continue,else

    同while

    #break
    #continue
    
    
    for i in range(10):
        if i == 4:
            # break
            continue
        print(i)
    
    
    for+else
    for i in range(10):
        print(i)
        break
    else:
        print('===>')
    break、continue

    五、实例

    九九乘法表

    for i in range(1,10):
        for j in range(1,i+1):
            print("%d*%d=%d" % (j, i, i * j), end=' ')
        print(' ')
    albums = ('Poe', 'Gaudi', 'Freud', 'Poe2')
    years = (1976, 1987, 1990, 2003)
    
    #sorted:排序
    for album in sorted(albums):
        print(album)
    
    #reversed:翻转
    for album in reversed(albums):
        print(album)
    
    #enumerate:返回项和
    for i in enumerate(albums):
        print(i)
    #zip:组合
    for i in zip(albums,years):
        print(i)
    复制代码

    六、小结

    • for循环为迭代循环
    • 可遍历序列成员(字符串,列表,元组)
    • 可遍历任何可迭代对象(字典,文件等)
    • 可以用在列表解析和生成器表达式中
    • break,continue,else在for中用法与while中一致
  • 相关阅读:
    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
    【Demo 0025】注册/反注册窗体类RegisterClassEx/UnregisterClass
    《白手起家Win32SDK应用程序》(完整版+目录)
    关于初始化C++类成员
    TCP和UDP的"保护消息边界" (经典)
    (经典)tcp粘包分析
    解决TCP网络传输“粘包”问题
    无锁队列
    MFC全局函数开局——AfxGetApp解剖
    Tomcat系列之服务器的安装与配置以及各组件详解
  • 原文地址:https://www.cnblogs.com/zhangningyang/p/7217259.html
Copyright © 2011-2022 走看看