【发布时间】:2013-10-21 19:40:24
【问题描述】:
我想知道是否需要两个列表推导来返回 set / dict / list 的有序对以及 set / dict / list 中的值的总和。这是我的意思的一个例子:
>>> l = ['abc', 'd', 'efgh', 'ij']
>>> {i: len(i) for i in l}, sum(len(i) for i in l)
({'efgh': 4, 'abc': 3, 'ij': 2, 'd': 1}, 10)
有没有比重复的 for i in l 理解更好/更 Pythonic 的方式来写这个?
更新:
我问这个问题是因为我在想最好的方法来写一个特定的lambda;即
>>> l = ['abc', 'd', 'efgh', 'ij']
>>> dict_value = lambda l: ({i: len(i) for i in l}, sum(len(i) for i in l))
>>> dict_value(l)
({'efgh': 4, 'abc': 3, 'ij': 2, 'd': 1}, 10)
我问这个问题是因为我没有使用len() 来计算我想要的值,而是一个昂贵的计算。如果我定义辅助方法而不是 lambda 来工作,下面关于 for 循环的点确实解决了问题。
【问题讨论】: