我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将会获得这些数字的总和,这是您从一开始就想要的:)

温温酱
TA贡献1752条经验 获得超4个赞
这两个int()
和str()
的功能。在此特定示例中,当函数的n=808
自变量str()
计算为1328时,将其转换为字符串时变为'1328'
。字符串是可迭代的,因此该map
函数仅适用int
于字符串的每个字符,从而产生sequence [1,3,2,8]
。
添加回答
举报
0/150
提交
取消