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

  • 相关阅读:
    命令基础
    绑定在表单验证上的应用
    绑定和绑定的各种使用场景
    双向数据绑定
    事件
    委托应用及泛型委托和多播委托
    委托
    LINQ
    反射重要属性方法
    反射基本内容
  • 原文地址:https://www.cnblogs.com/wmh33/p/10056153.html
Copyright © 2011-2022 走看看