• 序列中的数字序列range类型

    便捷的range()函数
    服务器君一共花费 11.005 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中。

    class range(stop)
    class range(start, stop [, step])
    

    对于第一种构造方式,start默认值为0,step默认值为1。

    当step为正时,一个range的元素值为r[i] = start + i * step 且 r[i] < stop; step为负时,r[i] > stop。

    >>> range(6)
    [0, 1, 2, 3, 4, 5]
    >>> tuple(range(0,-10,-2))
    (0, -2, -4, -6, -8)
    >>> 
    

    使用python的人都知道range()函数很方便,下面再介绍一些用法。

    >>> range(1,5) #代表从1到5(不包含5)
    [1, 2, 3, 4]
    >>> range(1,5,2) #代表从1到5,间隔2(不包含5)
    [1, 3]
    >>> range(5) #代表从0到5(不包含5)
    [0, 1, 2, 3, 4]
    

    再回顾一下,看看list的操作:

    array = [1, 2, 5, 3, 6, 8, 4]
    #其实这里的顺序标识是
    [1, 2, 5, 3, 6, 8, 4]
    (0,1,2,3,4,5,6)
    (-7,-6,-5,-4,-3,-2,-1)
     
    >>> array[0:] #列出0以后的
    [1, 2, 5, 3, 6, 8, 4]
    >>> array[1:] #列出1以后的
    [2, 5, 3, 6, 8, 4]
    >>> array[:-1] #列出-1之前的
    [1, 2, 5, 3, 6, 8]
    >>> array[3:-3] #列出3到-3之间的
    [3]
    

    那么两个[::]会是什么样子呢?

    >>> array[::2]
    [1, 5, 6, 4]
    >>> array[2::]
    [5, 3, 6, 8, 4]
    >>> array[::3]
    [1, 3, 4]
    >>> array[::4]
    [1, 6] 
    如果想让他们颠倒形成reverse函数的效果
    >>> array[::-1]
    [4, 8, 6, 3, 5, 2, 1]
    >>> array[::-2]
    [4, 6, 5, 1]
    

    差不多了解的话,再试图了解用 Python 实现冒泡排序吧(循环):

    array = [1, 2, 5, 3, 6, 8, 4]
    for i in range(len(array) - 1, 0, -1):
        print i
        for j in range(0, i):
            print j
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
    print array
    
    1. line 1:array = [1, 2, 5, 3, 6, 8, 4]一个乱序的list没什么好解释的
    2. line 2:for i in range(len(array) - 1, 0, -1):这就是上边给的例子的第二条,我们替换下就成为range(6,1,-1),意思是从6到1间隔-1,也就是倒序的range(2,7,1),随后把这些值循环赋给i,那么i的值将会是[6, 5, 4, 3, 2]
    3. line 3:for j in range(0, i):这是一个循环赋值给j,j的值将会是[0, 1, 2, 3, 4, 5][0, 1, 2, 3, 4][0, 1, 2, 3][0, 1, 2][0, 1]
    4. 那么上边两个循环嵌套起来将会是
    5. i----6
      j----0,j----1,j----2,j----3,j----4,j----5
      i----5
      j----0,j----1,j----2,j----3,j----4
      i----4
      j----0,j----1,j----2,j----3
      i----3
      j----0,j----1,j----2
      i----2
      j----0,j----1
      
    6. line 4:if array[j] > array[j + 1]:
    7. >>> array = [1, 2, 5, 3, 6, 8, 4]
      >>> array[0]
      1
      >>> array[1]
      2
      >>> array[2]
      5
      >>> array[3]
      3
      >>> array[4]
      6
      >>> array[5]
      8
      >>> array[6]
      4
      

      其实就是使用这个把这个没有顺序的array = [1, 2, 5, 3, 6, 8, 4]排序。

    8. line 5:array[j], array[j + 1] = array[j + 1], array[j] 替换赋值
    9. line 6:打印出来
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android根基概念Context 8 个条目
  2. [Python程序设计] Python语言概述 6 个条目
  3. [移动开发] Android与SQLite数据库 7 个条目
  4. [PHP程序设计] PHP里的引用 5 个条目
  5. [计算机算法] 从双端队列引出的卡特兰数 3 个条目
  6. [数据库技术] SQL基础语法 1 个条目
  7. [Python程序设计] 写几个简单的Tornado程序吧 5 个条目
  8. [智力开发与知识管理] 整体性学习步骤 9 个条目
  9. [智力开发与知识管理] 信息的类型与结构 9 个条目
  10. [移动开发] 从代码角度去认识 Thread 9 个条目
  11. [移动开发] 使用support-v7 ActionBar前的那些坑 3 个条目
  12. [移动开发] 简单了解Android Fragment 3 个条目
窗口 -- [协会]