欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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]]])

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

本文地址:https://blog.csdn.net/m0_37149062/article/details/107141355