集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都比较好的python培训讲解Python的Range()函数(指南)

发布者: 成都达内     浏览次数:     发布时间:2018-12-27 09:41:18

当需要执行特定次数的操作时,Python内置的range函数十分方便。虽然Python 2的range()和Python3中的range()共享了一个名字,但它们是完全不同的家伙。...

  成都比较好的python培训讲解Python的Range()函数(指南)

  当需要执行特定次数的操作时,Python内置的range函数十分方便。

  读罢本文,你将:

  理解Python的range函数是如何工作的

  了解Python 2和Python 3中的实现方式有何不同

  看过了不少range()函数操作实例

  有能力解决它的一些局限性

  让我们开始吧!

  range()函数的历史

  虽然Python 2的range()和Python3中的range()共享了一个名字,但它们是完全不同的家伙。事实上,Python 3中的range()只是Python 2中被称为xrange的函数的重命名版本。

  最初range()和xrange()都生成可以用for循环迭代的数字,但是前者同时生成这些数字的列表,而后者则懒洋洋地生成数字,这意味着后者只能在需要时一次返回一个数字。

  巨大的列表会占用内存,所以xrange()取代range()的名称和一切都不奇怪。您可以在PEP 3100中了解更多关于这个决定和xrange() vs range()的背景信息。

  注:PEP代表Python改善提议。PEPs是涵盖广泛主题的文档,其主题包括提出的新特性、风格、管理和哲学。

  他们有很多。PEP 1解释了它们是如何工作的,并且是一个入门的好地方。

  在本文其余部分中,您将使用Python 3中的range()函数。

  让我们开始吧!

  让我们来循环

  在深入研究range()如何工作之前,我们需要先看看循环是如何工作的。循环是计算机科学中的一个重要概念。掌握循环是成为一名优秀程序员的第一步。

  下面是Python中for循环的一个例子:

  Python的Range()函数(指南)

  输出如下:

  Python的Range()函数(指南)

  正如你所见,for循环使您可以执行特定的代码块,多少次都没问题。在这种情况下,我们遍历一个船长舰长名单,打印他们的名字。

  虽然《星际迷航》很棒,但你可能想做的不仅仅是简单的圈出舰长的名单。有时,您只希望执行特定次数的代码块。循环可以帮助你做到这一点!

  试运行下面的代码,其中的数字可以被3整除:

  Python的Range()函数(指南)

  该循环的输出如下:

  成都Python培训哪家好

  这是我们想要的输出,所以循环充分地完成了工作,但是还有另一种方法通过使用range()获得相同的结果。

  注:最后一个代码示例有一些字符串格式化。更多相关内容参见: Python String Formatting Best Practices 和 Python 3’s f-Strings: An Improved String Formatting Syntax (Guide)

  到此你已对循环更熟悉了,接下来让我们看看如何使用range()来简化。

  从range()开始

  那么Python的range函数是如何工作的呢?简单地说,range()允许你在给定范围内生成一系列数字。你可以根据传递给函数的参数数量决定该系列数字的开始和结束位置,以及该系列数字与下一个数字之间的步长。

  让我们在操作中先睹为快:

  成都Python培训哪家好

  在这个for循环中,你可以轻松地创建可被3整除的一系列数字,而不必自己提供每个数字。

  注:尽管这个例子适当的使用了range(),但通常不喜欢在for循环里中频繁使用range()。

  例如,下面的range()用例,一般不被认为是Python风格的:

  成都Python培训哪家好

  range()非常适合创建数字的迭代,但是当你需要迭代可用in操作符完成循环的数据时,它不是最佳选择。

  更多详情参见: How to Make Your Python Loops More Pythonic.

  你可用下述三种方式调用range():

  range(stop) 需要一个参数

  range(start, stop) 需要两个参数

  range(start, stop, step) 需要三个参数

  range(stop)

  当使用一个参数调用range()时,您将得到一系列数字,这些数字从0开始,包括直到(但不包括)stop的每个整数。

  以下是实践中的情况:

  成都Python培训机构哪家好

  循环的输出如下

  成都Python培训机构哪家好

  结果显示:输出的所有数字都在0到3之间,但不包括提供的3。

  range(start, stop)

  当你用两个参数调用range()时,你不仅要决定一系列数字停止的位置,而且还要决定它从哪里开始,所以你不必总是在0点开始。可以使用range()来使用范围(A,B)生成从A到B的一系列数字。让我们来看看如何生成一个从1开始的范围。

  尝试用两个参数调用range():

  成都Python培训机构哪家好

  输出如下:

  成都Python周末班

  到目前为止,非常好:您拥有从1(作为开始提供的数字)到但不包括8(作为停止提供的数字)的所有整数。

  但是如果您再添加一个参数,那么您就能够重现前面使用number_divisible_by_three列表时得到的输出。

  range(start, stop, step)

  当使用三个参数调用range()时,您不仅可以选择数字序列的开始和停止位置,还可以选择一个数字与下一个数字之间的步长。如果不提供step,那么range()将自动取step=1。

  注:step可以是正数也可以是负数,但不能为0:

  成都Python周末班

  若以0为步长,将报错。

  现在你知道如何使用step,可以回到我们之前看到的循环除以3。

  自己试试看:

  成都Python周末班

  输出将完全类似于本文前面看到的使用名为number_divisible_by_three的列表时的for循环的输出:

  成都Python培训班哪个好

  正如你在这个例子中看到的,你可以使用step参数增加到一个更高的数值。这叫做递增

  用range()实现递增

  如果你想实现递增,那么你需要将step设为正数。为了解这个的现实意义,键入以下代码:

  成都Python培训班哪个好

  如果step取25,那么循环的输出将是这样的

  成都Python培训班哪个好

  你得到的数字比前一个数字大25——你提供的step。

  现在,你已经看到了如何向前迈进一个距离,现在是时候看看你如何向后递减。

  用range()实现递减

  如果你的step是正数,那么你会得到一系列不断递增的数字。如果你的step为负数,那么你会得到一系列递减的数字。这可以让你从数字中倒退过来。

  在下面的示例中,step取-2。这意味着每个循环的递减步长为2

  成都python培训学费

  递减循环的输出如下:

  成都python培训学费

  你有一串数字,每一个都比前一个数字小2,这是你提供的step的绝对值。

  创建一个递减范围的最快速的方法是使用range(start,stop,step)。但是Python确实有一个内置的反函数。如果在reversed()中包装range(),则可以以相反的顺序打印整数

  试试看:

  成都python快速入门培训

  你将得到如下结果:

  成都python快速入门培训

  range()使迭代递减的数序列成为可能,而reversed()通常用于以相反的顺序对序列进行循环。

  注:reversed()也与字符串一起工作。你可以在 How to Reverse a String in Python中了解更多关于字符串的reversed()的功能。

  更深入使用range()

  现在你知道了如何使用range()的基础知识,是时候深入挖掘一下了。

  range()主要用于两个目的:

  重复执行for循环的循环体指定次数

  创建比使用列表或元组完成的更高效的整数迭代算法

  第一种用法可能是最常用的,并且你可以找到一种比利用range()更高效的利用迭代工具的方法来构造迭代器。

  下面是使用range时要记住的几个要点。

  Python中range()是一种类型:

  成都python在线学习课程

  你可以按索引访问range()中的项,就像列表中的那样:

  成都python在线学习课程

  您甚至可以在range()上使用切片标记,但是REPL中的输出在一开始可能看起来有点奇怪:

  成都python在线学习课程

  尽管这个输出看起来很奇怪,对一个range()切片,又返回另一个range()。

  可以通过索引和切片来访问range()的元素,这一事实突出了一个重要事实:range()与列表不同,是惰性的,但不是迭代器。

  Float和range()

  您可能已经注意到,到目前为止我们所处理的所有数字都是整数,也称为整数。这是因为range()只能以整数作为参数。

  浮点一词:

  在Python中,如果一个数字不是整数,那么它就是一个浮点。整数和浮点之间有一些区别。

  整数(int数据类型):

  · 是整数

  · 不包括小数点

  · 可以是正数、负数或0

  浮点数(浮点数据类型):

  · 可以是包含小数点的任何数字

  · 可以是正的也可以是负的

  尝试用浮点调用range(),看看会发生什么:

  成都比较好的python培训

  你应得到如下错误信息:

  成都比较好的python培训

  如果你需要找到一个可以让你使用浮点的解决方案,那么你可以使用NumPy。

  使用NumPy

  NumPy是第三方Python库。如果你要使用NumPy,第一步是检查你是否安装了它。

  以下是你在REPL做到这一点的方法:

  成都比较好的python培训

  如果你得到了一个 ModuleNotFoundError,那么你需要安装它。为此,请转到命令行并输入pip install numpy。

  一旦安装完毕,请输入以下内容:

  成都python周末培训

  它的返回如下:

  成都python周末培训

  如果要换行打印每个数字,可以执行以下操作:

  成都python培训怎么样

  输出如下:

  成都比较好的python培训讲解Python的Range()函数(指南)

  0.8999999999999999从哪来的?

  计算机在二进制浮点数字中保存十进制浮点数字是困难的。这导致了各种意想不到的数字表示。

  注:为了了解为什么有小数的问题,你可以看看这篇文章和Python文档。

  您可能还想看一下十进制库,它在性能和可读性方面略有下降,但是允许您准确地表示十进制数。

  另一个选择是使用round(),您可以在 How to Round Numbers in Python中了解更多相关内容。请记住,round()有自己的 怪癖,可能会产生一些令人惊讶的结果!

  这些浮点错误是否对你来说是个问题,取决于你正在解决的问题。误差将存在于第十六位小数处,绝大多数时候这是微不足道的。它们太小了,除非你正在计算卫星轨道或其他东西,否则你不必担心它。

  或者,您也可以使用 np.linspace()。它本质上是相同的,但是使用不同的参数。使用 np.linspace(),可以指定start和end(包含两者)以及数组的长度(而不是step)。

  例如,np.linspace(1, 4, 20) 给出了20个等距的数字:1.0, ..., 4.0. 另一方面, np.linspace(0, 0.5, 51) 给出0.00, 0.01, 0.02, 0.03, ..., 0.49, 0.50.

  注:为了了解更多,您可以阅读 Look Ma, No For-Loops: Array Programming With NumPy and this handy和 NumPy reference.。

  循环前行

  现在,你已了解如何使用range()并处理其局限性。您还可以了解Python 2和Python 3之间的这个重要功能是如何演变的。

  下一次你需要执行一个特定的次数,胸有成竹!

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56