稀土掘金 稀土掘金

Python range()函数--有代码实例的解释

在Python中,可以使用range() 函数来获得一个索引序列来循环一个可迭代的数据。你经常将range()for 循环结合使用。

在本教程中,你将学习使用range() 函数的不同方法 - 明确的开始和停止索引,自定义步长和负步长。

让我们开始吧。

了解 Python 的range() 函数

在研究使用range() 函数的不同方法之前,你必须了解它是如何工作的:

range() 函数返回一个范围对象。
当你迭代时,这个范围对象又返回序列中的连续项目

如上所述,range函数并不返回一个索引列表。相反,它返回一个范围对象,在你需要的时候返回指数。这使得它的内存效率也很高。

你可以用下面的一般语法来使用range() 函数:

range(start,stop,step)

当你把这个语法和一个循环结合起来使用时,你可以得到一个从start 到但不包括stop 的指数序列,步长为step

  • 你必须指定所需的参数stop ,它可以是任何正整数。如果你指定一个浮点数来代替,你会遇到一个TypeError ,如图所示:
my_range = range(2.5)

image-24

  • 如果你不指定start ,就会使用默认的起始索引0
  • 如果你不指定step ,就会使用默认的步骤大小1

在随后的章节中,你将了解到使用range() 函数的不同方法。

如何使用Python的range() 函数来循环任何迭代器

正如上一节所提到的,你只需要一个正整数就可以使用range() 函数。语法如下所示:

range(stop)

你可以使用上面这行代码,从0stop-1 得到一个序列:0,1,2,3, ...,stop-1

▶考虑下面的例子,你以5为参数调用range() 。然后你使用for 循环通过返回的范围对象,以获得预期的索引0,1,2,3,4:

for index in range(5):
  print(index)
  
#Output
0
1
2
3
4

如果你还记得,Python 中所有的迭代对象都遵循零索引。这就是为什么使用range() 循环遍历可迭代对象很方便。

一个长度为len 的迭代表有0,1,2, ...,len-1 作为有效索引。因此,要遍历任何迭代表,你需要做的就是把stop 的值设置为等于len 。你将得到的序列 -0,1,2, ...,len-1 - 是有效指数的序列。

▶让我们举一个更有用的例子。你有一个列表my_list 。你可以通过知道它们的索引来访问列表中的所有项目,你可以使用range() 得到这些索引,如下所示:

my_list = ["Python","C","C++","JavaScript","Julia","Rust","Go"]
for index in range(len(my_list)):
  print(f"At index {index}, we have {my_list[index]}")

记住,你可以使用 Python 的内置函数len 来获得任何可迭代的长度。在上面的代码中,你既使用了有效的索引,又使用了这些有效索引的列表项。这里是输出结果。

image-25

请注意my_list 是7个项目的长度,而获得的索引是从0到6,正如预期的那样。

有时,你可能需要使用负整数来代替。在这种情况下,如果你只使用stop 参数,你将不会得到期望的输出,尽管代码没有抛出错误。

这是因为默认的start 值被假定为0 ,而你不能从0 向上数到-5:

for index in range(-5):
  print (index)
  
  
#Output
#NOTHING HERE

如何使用Python的range() 函数,并有明确的开始和结束索引

你可能不总是想从零开始。你可以通过将start 的值设置为你想开始的索引,从任何任意的索引开始。语法如下:

range(start,stop)

在这种情况下,你就可以得到这个序列。start,start + 1,start + 2, 以此类推,直到stop-1

▶在下面的例子中,你从10开始,一直数到但不包括15,步数为1:

for index in range(10,15):
  print(index)

#Output
10
11
12
13
14

在上一节中,你看到当你需要负整数时,只使用stop 参数是不行的。然而,当你明确指定startstop 指数时,你也可以用负整数工作。

在这个例子中,你想从-5开始向上计数,步长为1。请记住,计数会在比stop 索引少1的值上停止:

for index in range(-5,0):
  print(index)
  
#Output
-5
-4
-3
-2
-1

如何使用Python的range() 函数****和** 自定义步骤大小

有时,你可能想跨过一个可迭代的东西,访问每一个k-th 元素,而不是按顺序遍历它。这时可选的step 参数就派上用场了。一般的语法如下所示:

range(start,stop,step)

当你使用这种语法并循环通过范围对象时,你可以用大小为step 的跨度从startstop-1

  • 你会得到这样的序列。start,start + step,start + 2*step, 以此类推,直到start + k*step ,这样start + k*step <stopstart + (k+1)*step >stop

在下面的例子中,你想以2为单位从0到20。注意最后打印出来的索引是19。这是因为,如果你再走一步,你就会到21,这比20大。

永远记住,你得到的最后一个值可以尽可能地接近stop ,但绝对不能是stop

for index in range(1,20,2):
  print(index)

#Output
1
3
5
7
9
11
13
15
17
19

如何使用Python的range() 函数, 并使用负的步长

到目前为止,你已经学会了用startstop 指数以及一个特定的步长来使用range() 函数,同时从start 向上数到stop

如果你需要从一个整数开始倒数,你可以为step 指定一个负值。一般的语法是:

range(start,stop,<negative_step>)
  • 现在可以使用范围对象来返回一个序列,该序列从start 开始向下计数,步长为negative_step ,直到但不包括stop
  • 返回的序列是start,start - negative_step,start - 2*negative_step, 以此类推,直到start - k*negative_step ,这样start - k*negative_step >stopstart - (k+1)*negative_step <stop
  • 负数的步长没有默认值--你必须设置negative_step = -1 ,使其涵盖每个数字的倒计时。

在这个例子中,你想从20开始倒数,步数为-2,所以序列是20、18、16,一直倒数到2。如果你再往下走2步,你就会碰到0,因为它比停止值1小:

for index in range(20,1,-2):
  print(index)
  
#Output
20
18
16
14
12
10
8
6
4
2

很容易看出,start >stop ,才能够倒数:

for index in range(10,20,-1):
  print(index)
  
 #Ouput
 #Nothing is printed - the sequence is empty.

▶在上面的例子中,你尝试从10倒数到20,这是不可能的。而且你没有得到任何预期的输出。

如何使用Python的range()reversed() 函数来反转一个序列?

如果你需要以相反的顺序访问一个可迭代的元素,你可以使用range() 函数和reversed() 函数。

Python 内置的reversed() 函数在给定序列的值上返回一个反向迭代器。

▶让我们来看看我们的第一个例子,我们使用了range(5) 。在下面的例子中,我们在range对象上调用reversed() 。我们看到,我们从4倒数到0。

for index in reversed(range(5)):
  print (index)
  
#Output
4
3
2
1
0

正如你所看到的,这等同于使用range(4,-1,-1) 。如果你愿意,你可以使用reversed() ,而不是上一节中讨论的negative_step 参数。

总结

在本教程中,你已经学会了使用range() 函数的不同方法。你可以尝试几个例子,每次都能得到不同的序列。这种练习将帮助你在循环遍历迭代表时有效地使用range()

编码愉快!直到下一个教程。

玻璃钢生产厂家山体玻璃钢雕塑普洱市玻璃钢雕塑代理树脂玻璃钢动物雕塑河北玻璃钢佛像雕塑价格深圳常用商场美陈价格玻璃钢酒店雕塑厂家供应异形玻璃钢花盆网吉安多彩玻璃钢雕塑定制河南商场美陈市场价苏州玻璃钢人物雕塑设计淮北特色玻璃钢雕塑灯市口商场美陈江苏特色商场美陈销售玻璃钢佛钟雕塑厂包头玻璃钢长颈鹿雕塑河北人物玻璃钢雕塑设计江西抽象玻璃钢雕塑销售厂家宜春抽象玻璃钢雕塑西宁人物玻璃钢雕塑公司玻璃钢花盆适合栽什么花玻璃钢雕塑仿真瓜果贵阳户内玻璃钢雕塑市场南平宁德玻璃钢花盆玻璃钢玩偶卡通人物雕塑泉州玻璃钢雕塑出租中国玻璃钢雕塑作品绥化玻璃钢雕塑商场美陈百科玻璃钢雕塑的设计中山玻璃钢蜗牛雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化