3 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)))
Run Code Online (Sandbox Code Playgroud)
所以我理解地图在数字迭代中应用相同的函数,但是什么throws me off is the int,str(...) part.我不确定幕后会发生什么.
这里使用了两个数学运算符:
// 表示地板划分,即在划分后提取结果的整数部分.% 表示模数,即除法后的余数.因此,对于n = 808,算法返回:
str(808 // 60 * 100 + 808 % 60) = str(13 * 100 + 28) = '1328'
Run Code Online (Sandbox Code Playgroud)
map(int, '1328')然后获取字符串中的每个字符'1328'并将其转换为整数,本身返回一个可迭代的.map需要一个iterable作为其第二个(和后续)参数.可以迭代字符串以一次提取一个字符.
最后,sum获取从中返回的每个整数map并将它们相加.
通过sum生成器表达式可以实现逻辑的等效公式:
sum(int(i) for i in str(n // 60 * 100 + n % 60))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |