|
在Python基础教程的列表推导式介绍中看到一段代码:
boys=['chris','arnold','bob']
girls=['alice','bernice','clarice']
[b+'+'+g for b in boys for g in girls if b[0]==g[0]]
此时复杂度应为n^2
作为改进,书里给出以下代码:
boys=['chris','arnold','bob']
girls=['alice','bernice','clarice']
letterGirls={}
for girl in girls:
letterGirls.setdefault(girl[0],[]).append(girl)
print([b+'+'+g for b in boys for g in letterGirls[b[0]]])
问这个代码的算法复杂度是怎样的,是否在所有word的首字母都不同时复杂度比上面的程序还要高?
|
|