是否可以将此功能,列表理解组合转换为单个列表理解(以便不需要keep
)?
def keep(list, i, big):
for small in list[i+1:]:
if 0 == big % small:
return False
return True
multiples[:] = [n for i,n in enumerate(multiples) if keep(multiples, i, n)]
答案 0 :(得分:6)
我认为就是这样:
multiples[:] = [n for i,n in enumerate(multiples)
if all(n % small for small in multiples[i+1:])]
答案 1 :(得分:2)
multiples[:] = [n for i, n in enumerate(multiples) if 0 not in [n % other for other in multiples[i+1:]]
Advisible?可能不是。
答案 2 :(得分:1)
首先要学习不要在代码中使用list
之类的名称。还要记住“首先使它工作,然后优化”。如果你继续学习东西,很可能在一个月后你对代码不再满意。尝试制作可读代码。为此,如果你可以(天堂禁止!)将它放在一边几个星期后阅读你自己的代码就会有所帮助。
也就是说,有时候实现列表理解更具可读性,但通常只有在编写了更愚蠢的代码版本之后才能实现。