前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开工之前的热身小菜(一)答案

开工之前的热身小菜(一)答案

作者头像
用户4945346
发布2020-06-16 10:27:02
2310
发布2020-06-16 10:27:02
举报
文章被收录于专栏:pythonista的日常pythonista的日常

有序字符数答案

1.1 菜鸡解法

代码语言:javascript
复制
from collections import OrderedDict


def ordered_count(input):
   counts = OrderedDict()
   for char in input:
       counts[char] = counts.get(char, 0) + 1

   return list(counts.items())

1.2 高手解法1

代码语言:javascript
复制
from collections import OrderedDict, Counter

class OrderedCounter(Counter, OrderedDict):
    pass
    
def ordered_count(seq):
     m=OrderedCounter(seq)
     return list(OrderedCounter(seq).items())

1.3 高手解法2

代码语言:javascript
复制
from collections import Counter

def ordered_count(input):
    return list(Counter(input).items())

1.4 点评

这道题因为要考虑有序,就是按照字符串里面的字符顺序,同时要统计字符出现的次数。高手解法1非常巧妙,里面两个类的继承,同时继承了collection 模块里面的OrderedDict和Counter两个子类。很秒!

缩写双字名称答案

2.1 高手解法1

代码语言:javascript
复制
def abbrevName(name):
    return '.'.join(w[0] for w in name.split()).upper()

2.2 高手解法2

代码语言:javascript
复制
abbrevName = lambda name: ".".join(e[0].upper() for e in name.split())

2.3 点评

几种高手的解法都是利用列表推导列表进行快速处理,然后用字符串自带upper()函数进行全大写。建议要熟悉常用的内置函数,比如:

代码语言:javascript
复制
''.lower()
''.upper()
''.count()
''.startswith()
''.capitalize()

有问题欢迎在留言区交流。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 pythonista的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档