Discuss / Python / 前面两个都挺简单的,第三个写的复杂了点,看了看前面的同学的笔记,顺便讲一讲思路

前面两个都挺简单的,第三个写的复杂了点,看了看前面的同学的笔记,顺便讲一讲思路

Topic source

Nectar

#1 Created at ... [Delete] [Delete and Lock User]

    return reduce(lambda x,y:x*10+y, map(int,s.replace('.','')))/(10**(len(s)-s.find('.')-1))

#这个程序是楼下Aqua这位的

#思路是把s这个字符串,不看小数部分,整个数据全部提取出来,转换成int类型,再除掉10的倍数,得到想要的结果

#以'123.456'为例,这里先用map,转换成了一个列表,即[1, 2, 3, 4, 5, 6],然后用reduce把他们处理得到123456这个结果

#随后(10**(len(s)-s.find('.')-1))这一步是为了得到123.456变成123456是放大了多少倍,就除掉多少倍   

#len(s)-s.find('.')-1 这里为什么减一,是因为这个是计算10的倍数,而s.find('.')找到的是'.'的索引值,不是位置

Nectar

#2 Created at ... [Delete] [Delete and Lock User]

准确来说,用mapd得到的不是一个列表,而是Iterator


  • 1

Reply