【发布时间】:2012-02-11 09:46:50
【问题描述】:
我使用列表推导可能与任何中级或高级 Python 程序员一样多。我尽量不要过度使用。
我很好奇这是否看起来晦涩难懂或只是简洁:
some_count = len([x for x in some_list if x in some_dict])
...代替:
some_count = 0
for x in some_list:
if x in some_dict:
some_count += 1
在实际情况下,我什至可以使用:
some_count = len(set(some_list) & set(some_dict))
(假设 some_list 中的项目保证是不同的)。
特别是我有一个函数,它返回一个(可能为空的)字符串列表(来自外部的专有数据存储)。在我的代码中,应该只有其中一个是字典的有效键。如果它是零,我应该发布一个警告,如果它是一,我应该只是我代码中的值,如果它超过一,我应该发出一个错误。
我只是在这里征求风格意见。
【问题讨论】:
-
不应该
...if x in some_dict(x)(在你的列表理解中)是...if x in some_dict? -
是的,我开始以一种方式写问题并改变了我试图提出问题的方式。
-
我几乎可以立即理解列表理解版本,扩展形式相当快,集合版本很快(我经常以这种方式使用这种集合操作)。
-
您的代码使用了minimal 完整(= 包括过滤条件)列表理解。如果 that 太晦涩难懂,那么您根本无法使用列表推导。所以这个问题没有实际意义。
标签: python coding-style set list-comprehension