python解决首字母姓名配对问题
程序员文章站
2022-04-19 12:31:27
本博文源于《Python基础教程》,来自于里面的一道习题两组不同的英文名字,男的一组,女的一组,将名字的首字母相同的男孩和女孩配对。...
本博文源于《Python基础教程》,来自于里面的一道习题
问题简介
两组不同的英文名字,男的一组,女的一组,将名字的首字母相同的男孩和女孩配对。
普通语言解决思路
博主学c的,比如就用c来解决。暴力穷举
- 双for循环,内循环一旦找到就打印,并跳出循环
- 然后做收尾工作
转化为python代码之后用列表推导
>>> girls = ['alice', 'bernice', 'clarice']
>>> boys = ['chris', 'arnold', 'bob']
>>> [b+'+'+g for b in boys for g in girls if b[0] == g[0]]
这里的两层列表推导就犹如c的双for循环
python Alex Martelli的回答
用字典方式。
将女孩名字的首字母作为键,整个名字作为值,存进字典里。然后将男性的名字的首字母与字典里的键做比对,比对成功就输出,时间复杂度降了一个量级可谓大用!
girls = ['alice', 'bernice', 'clarice']
boys = ['chris', 'arnold', 'bob']
letterGirls = {}
for girl in girls:
letterGirls.setdefault(girl[0], []).append(girl)
print([b+'+'+g for b in boys for g in letterGirls[b[0]]])
效果:
本文地址:https://blog.csdn.net/m0_37149062/article/details/107141355
上一篇: MySQL免安装版安装教程
下一篇: MySQL之备份恢复
推荐阅读