python面试题:range与xrange的区别,使用range有什么风险

系统 1487 0

range([start], [end], [long])

描述:

根据range里的参数生成指定范围指定步长的一个序列

参数:

[start]——指定范围的左边界,可取到

[end]——指定范围的右边界,不可取到

[long]——步长,若无步长,默认为1

返回值:

列表

实例:

            
              
                >>
              
              
                >
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                6
              
              
                ,
              
              
                2
              
              
                )
              
              
                [
              
              
                0
              
              
                ,
              
              
                2
              
              
                ,
              
              
                4
              
              
                ]
              
              
                >>
              
              
                >
              
              
                range
              
              
                (
              
              
                5
              
              
                )
              
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ,
              
              
                4
              
              
                ]
              
            
          

xrange()

描述:

用法与range完全相同,生成的不是数组,而是一个生成器

实例:

            
              
                >>
              
              
                >
              
              
                xrange
              
              
                (
              
              
                0
              
              
                ,
              
              
                6
              
              
                ,
              
              
                2
              
              
                )
              
              
                xrange
              
              
                (
              
              
                0
              
              
                ,
              
              
                6
              
              
                ,
              
              
                2
              
              
                )
              
              
                >>
              
              
                >
              
              
                xrange
              
              
                (
              
              
                5
              
              
                )
              
              
                xrange
              
              
                (
              
              
                5
              
              
                )
              
            
          

区别:

1、要生成很大的数字序列的时候,用xrange会比range性能优很多,不需要一上来就占用一块很大的内存空间;

2、range会直接生成一个list对象;xrange则不会直接生成一个list,而是每次调用返回其中的一个值

range()的风险

在python2中,range产生的是一个列表,如果range产生的列表需要一个很大的空间,系统会直接出现异常MemoryError;若未抛出异常,如此时range一直未被使用,就会一直占用系统内存,导致内存浪费。

在python3中,range不会立马占用内存空间,而是什么时候使用,什么时候才会生成列表。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论