python - 是否有 "Pythonic"方法来创建包含条件项的列表?

标签 python list-comprehension

我在真正的 Django 函数中得到了这段代码。如果满足某些条件,项目将添加到 列表

ret = []

if self.taken():
    ret.append('taken')

if self.suggested():
    ret.append('suggested')

#.... many more conditions and appends...

return ret

它非常实用。你知道它的作用,这很棒......
但我已经学会欣赏 listdict 理解的美妙之处。

是否有更Python 的方式来表达这个结构,或许可以一次性初始化和填充数组?

最佳答案

创建映射字典:

self.map_dict = {'taken': self.taken,
                 'suggested': self.suggested,
                 'foo' : self.bar}
[x for x in ['taken', 'suggested', 'foo'] if self.map_dict.get(x, lambda:False)()]

相关:Most efficient way of making an if-elif-elif-else statement when the else is done the most?

关于python - 是否有 "Pythonic"方法来创建包含条件项的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831742/

相关文章:

python - 将列表理解分配给原始列表是否安全?

python - 希望从 Dataframe 的所有行中删除 'None'

python - 合并多个列表理解

Python:将列表理解为 x,y 列表

Python:比较具有相似名称的文件(递归)

python - 如何验证 tkinter 中的条目?

python - 如何使用 Python 获取带有 Selenium 的 <ul> 中的 <li> 元素列表?

python - 如何通过 Selenium 和 Python 单元测试断言工具提示文本

python - 打印找到的实际字符串

python - (千层面)ValueError : Input dimension mis-match