为了账号安全,请及时绑定邮箱和手机立即绑定

试图了解Python映射

试图了解Python映射

偶然的你 2021-03-31 14:11:10
我maps以前在编程经验上还没有真正使用过,所以我很难理解更多内容complex versions of maps。因此,假设问题是在这种情况下,您在几分钟内就得到了一个整数n = 808。你是什么这个数字做的是将其转换为24 hour time,所以hh:mm。这会给你13:28。完成此操作后,将那个时间的数字相加即可得到答案。因此,answer would be 14。我看到了该解决方案的一个非常好的一线,并且我试图理解它,因为我的解决方案发生了5 more lines of code。这是解决方案:sum(map(int, str(n // 60 * 100 + n % 60)))因此,我知道映射在数字的迭代中应用相同的功能,但是throws me off is the int,str(...) part。我不确定幕后发生了什么。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

map如您所述,将函数应用于iterable。


所以,当你这样做


map(int, str(n // 60 * 100 + n % 60))

您正在int对iterable使用该函数str(n // 60 * 100 + n % 60)。如您所知,字符串是可迭代的(因为您当然可以对其进行迭代)-可以很容易地检查它


for char in "abcd":

    print(char)


a

b

c

d

的回报str(n // 60 * 100 + n % 60)是'1328'。应用于int每个字符时,将每个字符转换为整数。您可以轻松地看到这一点,而不是立即采取行动sum,不为所动


list(map(int, str(n // 60 * 100 + n % 60)))


[1, 3, 2, 8]

我想现在很容易看到sum将会获得这些数字的总和,这是您从一开始就想要的:)


查看完整回答
反对 回复 2021-04-20
?
温温酱

TA贡献1752条经验 获得超4个赞

这两个int()str()的功能。在此特定示例中,当函数的n=808自变量str()计算为1328时,将其转换为字符串时变为'1328'。字符串是可迭代的,因此该map函数仅适用int于字符串的每个字符,从而产生sequence [1,3,2,8]


查看完整回答
反对 回复 2021-04-20
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号