python解决首字母姓名配对问题

2022-08-09,,,,

本博文源于《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

《python解决首字母姓名配对问题.doc》

下载本文的Word格式文档,以方便收藏与打印。