首页/文章/ 详情

Python的range和map函数

7月前浏览9833

函数式编程(Functional programming)是一种编程范式,目前没有统一的定义。对于并发编程有广泛应用。Python中,range,map,filter,zip等属于函数式编程。

首先要明确一个概念--可迭代对象。列表、字典、range等都是可迭代对象(Iterables)

numbers = [1012342]
for num in numbers:
    print(num)

range

它返回一个range对象,该对象提供“查看特定数字序列的机会”(the opportunity to go overthe specific series of numbers),而不实际创建数字列表。获取一个对象而不是整个列表有很多优点。体现了惰性求值的特点。

调用方法:

  • range(start, end, step)
  • range(start, end) - 步长step 默认为1
  • range(end)    - 起始默认为 0, 步长step 默认为1

在下一个示例中,我们将看到range函数返回的对象需要多少内存,以及需要多少内存才能拥有相应的数字列表。现在让我们看看如何使用它:

import sys

rng = range(3222#rng 是rang型对象

# list将 rng 对象转换成列表形式
list_rng = list(rng) 

print(rng)
# 输出 rng 对象的地址:  <map object at 0x000000265AA67F350>
print(list_rng)
#输出[3,5,7,9,11,13,15,17,19,21]
print(sys.getsizeof(rng))
# 输出 rng 对象的大小为48 bytes
print(sys.getsizeof(list_rng))
# 输出 list_rng 对象的大小为136 bytes

range对象仅为48 bytes,而且是固定的。

map

map(func,seq)函数接收两个参数,一个是函数,一个是Iterable(可迭代对象,序列),map将传入的函数func()依次作用到序列seq的每个元素,并把结果作为新的Iterator(迭代器)返回,之后可转为lis或其他类型输出。注意:这里每个元素都有相同的操作要做。调用方法:

  • map(function, iterable, ...)
def double(n):
    return 2 * n

num = [12345678]
mp = map(double, num)   #mp 是map型对象
print(mp)
# 输出mp对象的地址:  <map object at 0x000000265AA67F400>

可以用list将mp对象转换成列表形式:

import sys

def double(n):
    return 2 * n

num = [12345678]
mp = map(double, num) #mp 是map型对象
list_mp = list(mp)  # list将mp对象转换成列表形式
print(list_mp )
# 输出[2,4,6,8,10,12,14,16]

print( sys.getsizeof(mp) )
# 输出mp对象的大小为48 bytes
print( sys.getsizeof(list_mp) )
# 输出list_mp对象的大小为120 bytes


来源:数值分析与有限元编程
pythonUMUnity
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 10文章 321课程 0
点赞
收藏
作者推荐

Python的射击小游戏

一个基于turtle模块编写的射击小游戏。假设玩家以往的的命中率为hit_rate = 0.8,随机数函数random()生成0-1之间的随机数,用来模拟玩家射击一次这一动作,若random() &gt; hit_rate则表示击中靶子。蓝色靶上出现一个白色的孔,同时还提示“中靶”。如图所示若random() &lt; hit_rate则表示击没有击中靶子。靶子没有任何变化,同时提示“脱靶”。以下是python代码:import turtle as tfrom random import randomt.hideturtle() # 隐藏箭头t.dot(70, &#39;blue&#39;) # 画靶子hit_rate = 0.6if random() &lt; hit_rate: # random() 生成0-1之间的随机数 t.dot(10, &#39;white&#39;) # 靶子穿孔 t.textinput(&quot;验靶&quot; ,&quot;中靶&quot;)else: t.textinput(&quot;验靶&quot; ,&quot;脱靶&quot;)t.done() turtle的几个方法hideturtle( ) 可简写为ht()。使箭头(海龟)不可见。当你绘制复杂图形时这是个好主意,因为隐藏海龟可显著加快绘制速度。dot(size=None, *color)size -- 一个整型数 &gt;= 1 (如果指定)color -- 一个颜色字符串或颜色数值元组绘制一个直径为 size,颜色为 color 的圆点。如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的较大值。textinput(title, prompt)title -- 字符串prompt -- 字符串弹出一个对话框窗口用来输入一个字符串。形参 title 为对话框窗口的标题,prompt 为一条文本,通常用来提示要输入什么信息。返回输入的字符串。如果对话框被取消则返回 None。来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈