zoukankan      html  css  js  c++  java
  • for语句,range() 函数

    for 语句在任意序列 (列表或者字符串) 中迭代时, 总是按照元素在序列中的出现顺序依次迭代.

    2 ... a = ['cat', 'window', 'defenestrate']
    3 >>> for x in a:
    4 ... print(x, len(x))
    5 ...
    6 cat 3
    7 window 6
    8 defenestrate 12

    如果你需要在循环体内修改你正迭代的序列 (例如说,复制序列中选定的项), 你最好是制作一个副本. 在序列上的迭代并不会自动隐式地创建
    一个副本. 切片标记让这种操作十分方便:

    1 >>> for x in a[:]: # 制 造 整 个 列 表 的 切 片 复 本
    2 ... if len(x) > 6: a.insert(0, x)
    3 ...
    4 >>> a
    5 ['defenestrate', 'cat', 'window', 'defenestrate']

    如果需要一个数值序列, 使用内建函式 range() 会很方便. 它产生等
    差级数序列:

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

    给出的终止点不会在生成的序列里; range(10) 生成 10 个值, 组成一个

    长度为 10 的合法序列. 可以让 range 的起始初值定为另一个数, 也可以指

    定一个不同的增量 (甚至可以为负; 有时这被称为’ 步长’):

    1 range(5, 10)
    2 5 through 9
    3
    4 range(0, 10, 3)
    5 0, 3, 6, 9
    6
    7 range(-10, -100, -30)
    8 -10, -40, -70


    要对一个序列的索引进行迭代的话, 组合使用 range() 和 len():

    1 >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
    2 >>> for i in range(len(a)):
    3 ... print(i, a[i])
    4 ...
    5 0 Mary
    6 1 had
    7 2 a
    8 3 little
    9 4 lamb

    多数情况中, 用 enumerate() 函式更加方便, 参见遍历技巧.

    直接打印 range 的时候会发生奇怪的事情:

    1 >>> print(range(10))
    2 range(0, 10)

    在许多情况下, range() 的返回值和列表的行为类似, 但是事实上并非

    如此. range() 是这样一个对象: 当你对它的返回值进行迭代时, 它确实返
    回了一些连续的项, 但是它并没有创建这样一个列表, 并因此节省了空间.

  • 相关阅读:
    WPF : ListBox的几种Template属性
    提问的角度 5W1H,GRETT
    软件=科学+技术+工程, 软件的成败, 软件开发的首要任务
    软件的几个问题
    体会
    "复述一遍"是沟通的好办法
    WCF客户端调用IIS上WebService的安全问题
    C#处理chart
    js获取asp.net服务器端控件的值Demo
    SQL Server的复合索引适当用法
  • 原文地址:https://www.cnblogs.com/wmh33/p/10056153.html
Copyright © 2011-2022 走看看