zoukankan      html  css  js  c++  java
  • python3中的range函数返回的是列表吗?

    注意,这里说的Python3里面的range函数,和Python2是不同的,返回的不是列表,是可迭代对象

    在python3中,如果执行下面的语句

    print(range(10))
    

      

    得到结果是 range(0,10) ,而不是期望的[0,1,2,3,4,5,6,7,8,9]。但是如果换一种方式

    print(list(range(10)))
    

      

    得到的结果却是

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

      

    那为什么会这样呢?其实在Python3中range()函数返回的对象很像一个列表,但是它确实不是一个列表,它只是在迭代的情况下返回指定索引的值,它并不会在内存中产生一个列表对象,官方解释说这样做是为了节约内存空间。通常我们称这种对象是可迭代的,或者是可迭代对象。

    这里就要引入另外一个叫迭代器的概念,迭代器可以从一个可迭代对象中连续获取指定索引的值,直到索引结束。比如list()函数,所以在上面的例子中,我们可以用list()这个迭代器将range()函数返回的对象变成一个列表。

    由此可以看出:range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型;list() 函数是对象迭代器,把对象转为一个列表,返回的变量类型为列表。

  • 相关阅读:
    Nhibernate 简单实例(一)
    Sql 行转列
    EasyUI TreeGrid 的使用
    MSMQ消息队列的简单使用
    实体类与DataTable互换
    给Config的appSettings节点赋值
    Angular js (2)
    Angular JS 入门
    用Aspose.Cells 导出为自定义格式的excel
    【多线程学习笔记整理】002_线程的停止、暂停、与yield
  • 原文地址:https://www.cnblogs.com/allenblogs/p/10344814.html
Copyright © 2011-2022 走看看