#yyds干货盘点#range() 函数

网友投稿 336 2022-08-23


#yyds干货盘点#range() 函数

内置函数 ​​range()​​ 常用于遍历数字序列,该函数可以生成算术级数:

>>> for i in range(5):... print(i)...01234

生成的序列不包含给定的终止数值;​​range(10)​​ 生成 10 个值,这是一个长度为 10 的序列,其中的元素索引都是合法的。range 可以不从 0 开始,还可以按指定幅度递增(递增幅度称为 '步进',支持负数):

>>> list(range(5, 10))[5, 6, 7, 8, 9]>>> list(range(0, 10, 3))[0, 3, 6, 9]>>> list(range(-10, -100, -30))[-10, -40, -70]

​​range()​​​ 和 ​​len()​​ 组合在一起,可以按索引迭代序列:

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']>>> for i in range(len(a)):... print(i, a[i])...0 Mary1 had2 a3 little4 lamb

不过,大多数情况下,​​enumerate()​​ 函数更便捷

如果只输出 range,会出现意想不到的结果:

>>> range(10)range(0, 10)

​​range()​​​ 返回对象的操作和列表很像,但其实这两种对象不是一回事。迭代时,该对象基于所需序列返回连续项,并没有生成真正的列表,从而节省了空间。这种对象称为可迭代对象 iterable​,函数或程序结构可通过该对象获取连续项,直到所有元素全部迭代完毕。​​for​​​ 语句就是这样的架构,​​sum()​​ 是一种把可迭代对象作为参数的函数:

>>> sum(range(4)) # 0 + 1 + 2 + 36

循环的技巧

在字典中循环时,用 ​​items()​​ 方法可同时取出键和对应的值:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}>>> for k, v in knights.items():... print(k, v)...gallahad the purerobin the brave

在序列中循环时,用 ​​enumerate()​​ 函数可以同时取出位置索引和对应的值:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):... print(i, v)...0 tic1 tac2 toe

同时循环两个或多个序列时,用 ​​zip()​​ 函数可以将其内的元素一一匹配:

>>> questions = ['name', 'quest', 'favorite color']>>> answers = ['lancelot', 'the holy grail', 'blue']>>> for q, a in zip(questions, answers):... print('What is your {0}? It is {1}.'.format(q, a))...What is your name? It is lancelot.What is your quest? It is the holy grail.What is your favorite color? It is blue.

逆向循环序列时,先正向定位序列,然后调用 ​​reversed()​​ 函数:

>>> for i in reversed(range(1, 10, 2)):... print(i)...97531

按指定顺序循环序列,可以用 ​​sorted()​​ 函数,在不改动原序列的基础上,返回一个重新的序列:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']>>> for i in sorted(basket):... print(i)...appleapplebananaorangeorangepear

使用 ​​set()​​​ 去除序列中的重复元素。使用 ​​sorted()​​​ 加 ​​set()​​ 则按排序后的顺序,循环遍历序列中的唯一元素:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']>>> for f in sorted(set(basket)):... print(f)...applebananaorangepear

一般来说,在循环中修改列表的内容时,创建新列表比较简单,且安全:

>>> import math>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]>>> filtered_data = []>>> for value in raw_data:... if not math.isnan(value):... filtered_data.append(value)...>>> filtered_data[56.2, 51.7, 55.3, 52.5, 47.8]


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:抖音 滑块验证方案 s_v_web_id 参数分析(抖音网页版)
下一篇:REST架构及RESTful应用程序简介
相关文章

 发表评论

暂时没有评论,来抢沙发吧~