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中一致
  • 相关阅读:
    HDU 2236 无题Ⅱ
    Golden Tiger Claw(二分图)
    HDU 5969 最大的位或 (思维,贪心)
    HDU 3686 Traffic Real Time Query System (图论)
    SCOI 2016 萌萌哒
    Spring Boot支持控制台Banner定制
    构建第一个Spring Boot程序
    Spring Boot重要模块
    Java fastjson JSON和String互相转换
    BCompare 4 Windows激活方法【试用期30天重置】
  • 原文地址:https://www.cnblogs.com/zhangningyang/p/7217259.html
Copyright © 2011-2022 走看看