asyncdefcrawl(self): workers = [ asyncio.Task(self.work(), loop=self.loop) for _ in range(self.max_tasks) ] self.t0 = time.time() await self.q.join() self.t1 = time.time() for w in workers: w.cancel()
width_heights = [str(p['width'])+'_'+str(p['height']) for p in photos] width_heights_counts = get_counts(width_heights) print(len(width_heights_counts)) top_counts(width_heights_counts) ```
### top10 颜色 ```python colors = [p['color'] for p in photos if'color'in p and p['color'] isnotNone] colors_counts = get_counts(colors) print(len(colors_counts)) top_counts(colors_counts) ```
自学编程不少年了,看过不少东西,觉得什么都知道一点,让自己做出个项目却完全没有头绪. 所以就决定刷完 freeCodeCamp,打好基础.在 Basic Algorithm Scripting碰到一个问题 Algorithm:Title Case a Sentence 完全没有头绪.如果是python用内置的方法就可以实现了, javascript 里面没有.点击Read-Search-Ask就可以看到一些解决方法.
用最基础的方式解决
这种方式比较简单, 不过代码比较长.
String.prototype.replaceAt = function(index, character) {
return this.substr(0, index) + character + this.substr(index+character.length);
};
function titleCase(str) {
var newTitle = str.split(' ');
var updatedTitle = [];
for (var st in newTitle) {
updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase());
}
return updatedTitle.join(' ');
}
用内置的高阶方法解决
利用的语言内置的高阶函数,可以减少很多代码,例如 map.
function titleCase(str) {
var convertToArray = str.toLowerCase().split(" ");
var result = convertToArray.map(function(val){
return val.replace(val.charAt(0), val.charAt(0).toUpperCase());
});
return result.join(" ");
}
titleCase("I'm a little tea pot");
利用各种黑魔法解决
这种方法比较难想到,也不太通用.
function titleCase(str) {
return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
}