试图了解Python映射

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。我不确定幕后发生了什么。


偶然的你
浏览 161回答 3
3回答

慕姐4208626

map如您所述,将函数应用于iterable。所以,当你这样做map(int, str(n // 60 * 100 + n % 60))您正在int对iterable使用该函数str(n // 60 * 100 + n % 60)。如您所知,字符串是可迭代的(因为您当然可以对其进行迭代)-可以很容易地检查它for char in "abcd":    print(char)abcd的回报str(n // 60 * 100 + n % 60)是'1328'。应用于int每个字符时,将每个字符转换为整数。您可以轻松地看到这一点,而不是立即采取行动sum,不为所动list(map(int, str(n // 60 * 100 + n % 60)))[1, 3, 2, 8]我想现在很容易看到sum将会获得这些数字的总和,这是您从一开始就想要的:)

温温酱

这两个int()和str()的功能。在此特定示例中,当函数的n=808自变量str()计算为1328时,将其转换为字符串时变为'1328'。字符串是可迭代的,因此该map函数仅适用int于字符串的每个字符,从而产生sequence [1,3,2,8]。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python